android-将广播意图从服务发送到应用程序类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android-将广播意图从服务发送到应用程序类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2231字,纯文字阅读大概需要4分钟。
内容图文
![android-将广播意图从服务发送到应用程序类](/upload/InfoBanner/zyjiaocheng/690/71958972307844de89add9177648b7e5.jpg)
是否可以将意图从服务发送到Application类?没有活动?
我不知道在特定时间会运行什么活动,因此我在活动类中添加了一个布尔型标志,该标志检测活动并根据接收到的广播发送适当的数据.
解决方法:
如果您的服务处于活动状态,那么您的Application类也将处于活动状态.
否则,您将无法使用getApplicationContext().
尽管我对永远运行的服务持怀疑态度,但是如果当前的最后一个活动处于活动状态,则有一种非常干净的方法可以使该服务与某个活动进行通信.
这种干净的方式称为LocalBroadcastManager.
打算接收数据的活动应在onResume()中注册一个BroadcastReceiver,并在onPause()中注销.
您可以在Activity的onCreate()中实例化BroadcastReceiver
this.localBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Do what you have to do here if you receive data from the Service.
}
}
您创建一个过滤器,以便您的活动仅侦听某种类型的信号.
private IntentFilter notifIntentFilter new IntentFilter("com.you.yourapp.MY_SIGNAL");
在onResume()中
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(this.localBroadcastReceiver, notifIntentFilter);
在onPause()中
LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(this.localBroadcastReceiver);
现在,无论何时要将数据发送到活动中,您的服务都可以致电:
final Intent intent = new Intent();
intent.setAction("com.you.yourapp.MY_SIGNAL");
// put your data in intent
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);
如果您的活动处于唤醒状态,它将响应该信号.否则,如果它在后台或未实例化,则不会.
您可以将此模式应用于任意数量的“活动”.
不过,我从未在Application类中使用过此方法.但是您可以尝试在此处注册接收器.这可能会起作用,因为如果Application类被销毁,那么BroadcastReceiver也将被销毁,因此也可能未注册.
关键是,如果您的应用程序被销毁,您的服务也会被杀死.除非您在另一个过程中启动它.但是,它将拥有自己的Application实例;这是一件复杂的事情,您现在可能不想详细了解…
重要提示:由于Application类未绑定到任何UI组件,因此您可以在服务内部直接执行所需的任何操作.如果您需要操作UI,那么上述模式将为您工作.
请阅读有关新的Android’s background limitations的信息.
编辑:
哦,是的,如果您需要Service来调用Application类中声明的函数,则可以
((MyApplication) getApplication()).myFunctionToHandleData(Intent intent);
虽然我不太了解您的问题,但是上述两种方法都可以为您服务.
内容总结
以上是互联网集市为您收集整理的android-将广播意图从服务发送到应用程序类全部内容,希望文章能够帮你解决android-将广播意图从服务发送到应用程序类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。