2012-07-07 71 views
0

我有一个报警应用程序,用户可以设置多个闹钟。当闹钟响起时(使用AlarmManager和BroadcastReceiver),应用程序只显示一个通知。什么时候我的应用程序的过程中死去

我的应用程序可能无法在前台的很长一段时间所以不会有UI线程运行。

我的问题是,当警报响起,并显示一条通知,我的应用程序的代码部分被执行(该广播接收器和通知创建)。接下来发生什么?我的应用程序的进程是否立即死亡?在Android决定杀死它之前它会保持在一些闲置状态吗?

(这是所有相关的大约持续通知的ID。当我的应用程序是另一个问题(http://stackoverflow.com/questions/11376294/do-i-need-to-persist-my-notification-ids)在前景不运行和两个报警分开熄灭一分钟,我通知的ID存储在一个静态的ArrayList,使用第二通知创造看来我的通知创造者类仍占据第一通知的ID在ArrayList中的调试器。这暗示这个过程在第一个和第二个闹钟之间进行。)

回答

1

接下来会发生什么?

鉴于你的头像,你有一个点O”茶。或者也许是一品脱,这取决于一天中的时间和饮料偏好。

:-)

是我的应用程序的过程当即毙命?

大概不会。

在Android决定杀死它之前它会保持在一些闲置状态吗?

是的。当它需要RAM来启动其他进程时,Android终止进程。如果你的进程没有正在运行的组件,它将在要终止的进程列表上相对较高。所以,你的过程可能不会过长,但你的BroadcastReceiver结局和被终止的过程之间没有直接的因果关系。

当我的应用程序未在前台运行并且两个警报分开一分钟时,我将Notification ID存储在静态ArrayList中。在创建第二个Notification时使用调试器,似乎我的Notification创建者类仍然在ArrayList中保存了第一个Notification的ID。这表明该过程在第一次和第二次警报之间生效。

由于报警之间只有一分钟的时间,所以您的流程可能会持续存在是合理的,但这并不能保证。当然,持续每分钟运行一次警报不太可能让您受到欢迎,因此请确保用户对此行为有一定的控制权(例如,可以彻底停止您的应用程序,可以修改投票时间段)。

+0

谢谢马克。 (精确的警报完全是为了调试目的!) – barry 2012-07-07 16:07:00

1

Android在这里有一些文档:Activity | Process Lifecycle 这一切都取决于系统有多少内存和进程的类型。对于BroadcastReceivers来说,当设备内存不足时,它似乎首先被杀死,但如果不是,则会持续存在。

+0

感谢您的链接。我意识到那个页面,但不知道它讨论的是'空过程',这是我的应用程序正在发生的事情。 – barry 2012-07-07 20:05:27

相关问题