Android 广播接收者是否需要自己独立于UI(活动)的流程?
因此,我正在开发一款应用程序,它使用AlarmManager向我的接收器广播一个意图,让接收器完成一项简单的任务并快速完成。我希望我的接收器每隔几分钟运行一次,因此我使用Android 广播接收者是否需要自己独立于UI(活动)的流程?,android,broadcastreceiver,repeatingalarm,Android,Broadcastreceiver,Repeatingalarm,因此,我正在开发一款应用程序,它使用AlarmManager向我的接收器广播一个意图,让接收器完成一项简单的任务并快速完成。我希望我的接收器每隔几分钟运行一次,因此我使用setRepeating来确保这一点。我不想担心我的应用程序的主要活动是否正在运行,或者在警报触发时是否可见。为了让我的接收者与主活动分开运行,我是否需要在清单中向接收者添加android:process=“:remote”?或者它们已经本质上是分离的东西了?两者不需要沟通。我正在尽最大努力在不取消任何警报的情况下终止活动,目前
setRepeating
来确保这一点。我不想担心我的应用程序的主要活动是否正在运行,或者在警报触发时是否可见。为了让我的接收者与主活动分开运行,我是否需要在清单中向接收者添加android:process=“:remote”
?或者它们已经本质上是分离的东西了?两者不需要沟通。我正在尽最大努力在不取消任何警报的情况下终止活动,目前接收器似乎运行正常,但我想知道它是否能继续工作几个小时或几天。是的,它们是分开的。不需要使用该属性
顺便问一下,你在那个收音机里做了多少工作?通常,你不能在广播接收器内部做很多事情,你可以用它来触发其他事情
另外,我想知道你是如何做到以下几点的:
“我正在尽我最大的努力阻止这项活动…”
我想知道你想通过阻止活动来解决什么问题 对于你眼前的问题——当然不是——它将是性能杀手,而且无论如何都是不必要的 你的设计有缺陷。你应该:
- 对于WIS骨架
onReceive
启动一个线程,该线程发出web请求并将结果存储在sqlite数据库中。我必须在线程中执行此操作,因为有时我强制某个活动进行广播,它会在ui线程上引发访问网络的异常。您不能从BroadcastReceiver启动线程,您必须从onReceive执行startService和IntentService:我将在触发下一个AlarmManager事件之前终止进程,以便即使活动未运行,我也知道事件正在发生。至于“你不能开始一个线程…”我是,它的工作。为什么我不能?也许我应该说我的onReceive正在显式地启动一个新线程。我不希望onReceive已经是它自己的线程。该线程的优先级较低,并且可能比IntentService(甚至比服务)更早被终止。除此之外,还有其他一些原因。我得再研究一下这个话题。