Я пытаюсь выполнять интенсивные задачи процессора каждые 60 секунд.Я использую AlarmManager с PendingIntent, `
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>
чтобы добавить, я попробовал решение, приведенное в этом ответе на SO, но все еще не повезло