android-将广播意图从服务发送到应用程序类

android-将广播意图从服务发送到应用程序类,第1张

概述是否可以将意图从服务发送到Application类?没有活动?我不知道在特定时间会运行什么活动,因此我在活动类中添加了一个布尔型标志,该标志检测活动并根据接收到的广播发送适当的数据.解决方法:如果您的服务处于活动状态,那么您的Application类也将处于活动状态.否则,您将无法使用getAp

是否可以将意图从服务发送到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 intentLocalbroadcastManager.getInstance(getApplicationContext()).sendbroadcast(intent);

如果您的活动处于唤醒状态,它将响应该信号.否则,如果它在后台或未实例化,则不会.

您可以将此模式应用于任意数量的“活动”.

不过,我从未在Application类中使用过此方法.但是您可以尝试在此处注册接收器.这可能会起作用,因为如果Application类被销毁,那么broadcastReceiver也将被销毁,因此也可能未注册.

关键是,如果您的应用程序被销毁,您的服务也会被杀死.除非您在另一个过程中启动它.但是,它将拥有自己的Application实例;这是一件复杂的事情,您现在可能不想详细了解…

重要提示:由于Application类未绑定到任何UI组件,因此您可以在服务内部直接执行所需的任何 *** 作.如果您需要 *** 作UI,那么上述模式将为您工作.

请阅读有关新的Android’s background limitations的信息.

编辑:

哦,是的,如果您需要Service来调用Application类中声明的函数,则可以

((MyApplication) getApplication()).myFunctionToHandleData(Intent intent);

虽然我不太了解您的问题,但是上述两种方法都可以为您服务.

总结

以上是内存溢出为你收集整理的android-将广播意图从服务发送到应用程序类全部内容,希望文章能够帮你解决android-将广播意图从服务发送到应用程序类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1093012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存