Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 广播接收者是否需要自己独立于UI(活动)的流程?_Android_Broadcastreceiver_Repeatingalarm - Fatal编程技术网

Android 广播接收者是否需要自己独立于UI(活动)的流程?

Android 广播接收者是否需要自己独立于UI(活动)的流程?,android,broadcastreceiver,repeatingalarm,Android,Broadcastreceiver,Repeatingalarm,因此,我正在开发一款应用程序,它使用AlarmManager向我的接收器广播一个意图,让接收器完成一项简单的任务并快速完成。我希望我的接收器每隔几分钟运行一次,因此我使用setRepeating来确保这一点。我不想担心我的应用程序的主要活动是否正在运行,或者在警报触发时是否可见。为了让我的接收者与主活动分开运行,我是否需要在清单中向接收者添加android:process=“:remote”?或者它们已经本质上是分离的东西了?两者不需要沟通。我正在尽最大努力在不取消任何警报的情况下终止活动,目前

因此,我正在开发一款应用程序,它使用AlarmManager向我的接收器广播一个意图,让接收器完成一项简单的任务并快速完成。我希望我的接收器每隔几分钟运行一次,因此我使用
setRepeating
来确保这一点。我不想担心我的应用程序的主要活动是否正在运行,或者在警报触发时是否可见。为了让我的接收者与主活动分开运行,我是否需要在清单中向接收者添加
android:process=“:remote”
?或者它们已经本质上是分离的东西了?两者不需要沟通。我正在尽最大努力在不取消任何警报的情况下终止活动,目前接收器似乎运行正常,但我想知道它是否能继续工作几个小时或几天。

是的,它们是分开的。不需要使用该属性

顺便问一下,你在那个收音机里做了多少工作?通常,你不能在广播接收器内部做很多事情,你可以用它来触发其他事情

另外,我想知道你是如何做到以下几点的:

“我正在尽我最大的努力阻止这项活动…”


我想知道你想通过阻止活动来解决什么问题

对于你眼前的问题——当然不是——它将是性能杀手,而且无论如何都是不必要的

你的设计有缺陷。你应该:

  • 注册警报(同时注意在引导时重新注册)-有关注册警报的代码,请参阅
  • 当AlarmaManager唤醒您的接收者时,请将代理发送到。当设备处于休眠状态时,不能保证intent服务运行(请参阅)
  • 另见:

    • 对于WIS骨架

    • onReceive
      启动一个线程,该线程发出web请求并将结果存储在sqlite数据库中。我必须在线程中执行此操作,因为有时我强制某个活动进行广播,它会在ui线程上引发访问网络的异常。您不能从BroadcastReceiver启动线程,您必须从onReceive执行startService和IntentService:我将在触发下一个AlarmManager事件之前终止进程,以便即使活动未运行,我也知道事件正在发生。至于“你不能开始一个线程…”我是,它的工作。为什么我不能?也许我应该说我的onReceive正在显式地启动一个新线程。我不希望onReceive已经是它自己的线程。该线程的优先级较低,并且可能比IntentService(甚至比服务)更早被终止。除此之外,还有其他一些原因。我得再研究一下这个话题。