【问题标题】:android remote process(receiver) dies quicklyandroid远程进程(接收器)迅速死亡
【发布时间】:2011-03-03 08:30:48
【问题描述】:

我正在尝试每 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 中提供的解决方案,但仍然没有运气

【问题讨论】:

    标签: android android-intent broadcastreceiver alarmmanager android-pendingintent


    【解决方案1】:

    我自己终于得到了答案,

    BroadcastReceiver 对象只是 在调用期间有效 onReceive(上下文,意图)。一旦你 代码从此函数返回, 系统认为对象是 已完成且不再处于活动状态。

    来源:click here

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2015-09-02
      • 2012-12-11
      • 1970-01-01
      相关资源
      最近更新 更多