我试图每60秒执行一次CPU密集任务。我使用带有PendingIntent的AlarmManager,

    Intent intent = new Intent(MainActivity.this,AlarmReciever.class);
    PendingIntent pi=PendingIntent.getBroadcast(this, 0, intent, 0);
    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), period, pi);


AlarmReciever.class使用某些第三方二进制文件进行了一些密集的处理,并且至少需要12秒才能完成(当同一活动作为单个活动运行进行测试时)。
但是,当我以与PendingIntent相同的方式运行时,我看到远程进程在启动后几秒钟内死亡。我得到这个错误

03-03 03:09:45.417: INFO/ActivityManager(109): Start proc com.am:remote for broadcast com.am/.AlarmReciever: pid=7940 uid=10052 gids={1015}

03-03 03:09:55.375: WARN/ActivityManager(109): Timeout of broadcast BroadcastRecord{40a1ee80 null} - receiver=android.os.BinderProxy@4074f798, started 10003ms ago

03-03 03:09:55.375: WARN/ActivityManager(109): Receiver during timeout: ResolveInfo{40ae3380 com.am.AlarmReciever p=0 o=0 m=0x0}

03-03 03:09:56.105: ERROR/ActivityManager(109): ANR in com.am:remote

03-03 03:09:56.105: ERROR/ActivityManager(109): Reason: Broadcast of Intent { flg=0x4 cmp=com.am/.AlarmReciever (has extras) }

03-03 03:09:56.105: ERROR/ActivityManager(109): Load: 1.44 / 1.42 / 1.29


在Logcat中。它说

 Reason: Broadcast of Intent { flg=0x4 cmp=com.am/.AlarmReciever (has extras) }


但我并没有在意图中添加任何其他内容。但是将来我想放点东西。

有人能帮助我理解为什么它如此迅速地关闭,以及该过程只有在完成其任务后才能终止的方法。

清单以这种方式列出

   <receiver  android:process=":remote" android:name="AlarmReciever"></receiver>


补充一点,我已经尝试过在answer中提供的解决方案,但是仍然没有运气

最佳答案

我自己终于得到了答案,


  仅一个BroadcastReceiver对象
  在通话期间有效
  onReceive(Context,Intent)。一旦你
  代码从该函数返回,
  系统认为对象是
  完成,不再有效。


来源:click here

关于android - android远程进程(接收方)快速死亡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5178271/

10-10 01:57