2012-07-07 33 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

相關問題