2010-06-25 82 views

回答

2

使用AlarmManager來設置兩個鬧鐘,每個鬧鐘都有一個PendingIntent,這個鬧鐘會在您的服務上調用startService(),但具有不同的操作字符串('start','stop')。當您的服務的onStart()檢測到「停止」動作Intent時,它會安排有序關閉(例如,stopSelf())。

如果用戶在Android 2.1或更早版本中向您應用任務管理器,則會失敗,因爲他們傾向於使用的技術會消除您的警報(除了終止服務)。在這種情況下,用戶可能投票選擇不運行服務,因此您應該嘗試滿足用戶的願望。

+0

@CommonsWare我在哪裏設置AlarmManager,可以在我想管理的服務中完成嗎? – Pentium10 2010-06-25 19:11:01

+0

@ Pentium10:您最初可能會在引導時間'BroadcastReceiver'中初始化您的鬧鐘。 – CommonsWare 2010-06-25 20:23:53

+0

@CommonsWare可能不是最好的切入點,想想應用程序剛剛安裝的情況(接收器尚未被解僱,沒有電話重新啓動)。相反,啓動應用程序將導致服務啓動(如前面的問題所述)。所以我看到的是,當服務開始時,我可以設置鬧鐘的時間點。我錯了? – Pentium10 2010-06-25 20:26:49

0

CommonsWare是正確的。這是最好的方法。 你正在編寫一個應用程序,你最好不要改變任何應用程序。如果您想要添加系統服務(在引導啓動服務上),您需要修改BSP並將您的服務添加到systemserver.java。這是不推薦的.CommonsWare的建議可以完成這項工作。 正如您所說的活動,您可以在收到啓動廣播時啓動活動。然後做你想要的......

相關問題