我正在从一个片段启动一个前台服务,该片段在调用后被破坏startService()
,这是我无法使用的原因ResultReceiver
or Messanger
。所以选项仍然存在PendingIntent
。如何使用 PendingIntent 在任何活动/片段的前台服务(托管在不同进程中)之间进行通信?
您有两个不同的问题:
如何从服务进程获取数据到UI进程?
如何从 #1 所做的任何事情中获取数据到 UI 需要该数据的任何部分?
对于#1 有多种解决方案:PendingIntent
, ResultReceiver
, Messenger
、AIDL 定义的绑定服务连接回调等。#2 主要是使用事件总线或类似的东西来向所有相关 Java 对象发出有关新数据的警报。
例如,这是一个使用PendingIntent
为了这:
实施一个BroadcastReceiver
or Service
在你的活动过程中,在清单中注册,但没有<intent-filter>
作为通话的一部分startService()
, 创建一个PendingIntent
使用它的getBroadcast()
or getService()
工厂方法,带有Intent
识别您的BroadcastReceiver
or Service
,然后把它PendingIntent
额外的Intent
与一起使用startService()
您在其他流程中的服务,当它有数据要传递给活动流程时,calls send() on the PendingIntent https://developer.android.com/reference/android/app/PendingIntent.html#send(android.content.Context,%20int,%20android.content.Intent),包括一个Intent
包含要填充到广播或服务请求中的数据
Your BroadcastReceiver
or Service
从步骤#1开始Intent
传递给它并使用事件总线让活动进程的其余部分知道发生了什么,还处理以下情况nothing在活动流程中注册该事件(例如,提出Notification
如果所有活动都被破坏)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)