android远程进程(接收者)快速死亡

标签 android android-intent broadcastreceiver alarmmanager android-pendingintent

我正在尝试每 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 秒才能完成(当同样作为单个 Activity 运行进行测试时)。 但是当我运行与 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) }

但我并没有在 Intent 中添加任何额外内容。但将来我想放置一些东西。

有人可以帮助我理解为什么它关闭得如此之快,以及如何才能让进程在完成任务后才结束。

list 是这样列出的

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

补充一下,我已经尝试了这个 answer 中提供的解决方案在 SO 上,但仍然没有运气

最佳答案

自己终于得到了答案,

A BroadcastReceiver object is only valid for the duration of the call to onReceive(Context, Intent). Once your code returns from this function, the system considers the object to be finished and no longer active.

来源:click here

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

相关文章:

Android:ACTION_BATTERY_LOW 未在模拟器中触发。接收器在代码中注册,而不是 list

android - 如何获得画廊应用程序可见的每个新图像的通知?

android - 触发键盘时CSS隐藏布局的底部

android - 将 ScrollView 滚动到中间

java - onLocationChanged 方法仍在不同的 Activity 中运行

android - 跨类(class)创建 Intent 和 Activity

java - 如何在 Activity 之间使用模型类数据在 android 中序列化 ArrayList?

android - 如何在 Kotlin Android 中为数据类创建空构造函数

android - 异步任务结束后开始 Intent

android - 如何以编程方式使用 BroadCastReceiver