0

我正在做一些测试,我认为 Android 正在杀死我的远程广播接收器。

现在我正在从一个活动启动我的广播接收器,然后让广播接收器每分钟设置一个警报以重新启动自己。这在几个小时(2-20 小时)内效果很好,然后它就会“赢得死亡”。

有谁知道我为什么会得到这个以及我可以做些什么来让它永久运行?

D/ShutMeUp AlarmReceiver(16161): ALARM TRIGGERED <br>
I/ShutMeUp AlarmReceiver(16161): Doing AWESOME stuff
<br>I/ShutMeUp AlarmReceiver(16161): Month:May Day:Monday Hour:0 Min:10
<br>D/ShutMeUp AlarmReceiver(16161): ALARM END
<br>D/ShutMeUp AlarmReceiver(16161): ALARM TRIGGERED
<br>I/ShutMeUp AlarmReceiver(16161): Doing AWESOME stuff
<br>I/ShutMeUp AlarmReceiver(16161): Month:May Day:Monday Hour:0 Min:11
<br>D/ShutMeUp AlarmReceiver(16161): ALARM END
<br>I/ActivityManager( 1904): Exiting application process se.davidsebela.ShutMeUp  
 (android.os.BinderProxy@4423b0b0)
<br>I/WindowManager( 1904): WIN DEATH: Window{4430bea8se.davidsebela.ShutMeUp/se.davidsebela.ShutMeUp.ShutMeUp paused=false}
<br>I/WindowManager( 1904): WIN DEATH: Window{441f17e8 se.davidsebela.ShutMeUp/se.davidsebela.ShutMeUp.Create paused=false}
<br>I/ActivityManager( 1904): Process se.davidsebela.ShutMeUp:remote (pid 16161) has died.
4

3 回答 3

1

我想我已经解决了我的问题setRepeating()

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), delayInMilli, pendingIntent);
于 2012-06-01T11:13:37.550 回答
0

活动生命周期

您可能处于“具有更高优先级的应用程序需要内存”->“应用程序进程被杀死”的情况。

使用 Linux,您无法确定某个应用程序会永久运行。

于 2012-05-31T09:57:07.913 回答
0

如果您的代码从活动中启动广播接收器,您还必须从活动中停止它(和警报管理器条目),因为 android 可能会像您经历的那样从内存中抛出您的活动。

我在 中注册onResume()和注销onPause()

如果您希望您的 BroadCastReceiver 在内存不足时重新加载,我宁愿通过清单注册 BroadCastReceiver。在这种情况下,android 操作系统处理加载/卸载。

[更新]

 > I am starting my Broadcastreceiver from an activity

我误解了您通过代码而不是清单注册 BroadCastReceiver 的声明。如果它在清单中注册,则 android 负责加载 Broadcastreceiver 代码。所以你的问题是不同的。

于 2012-05-31T10:00:28.440 回答