我有4個服務A B C和D我使A運行在一個循環中,當它初始化的時候,我在A服務中設置了警報管理器的意圖,每隔幾分鐘就啓動B C和D服務。所以A一直在跑,B,C和D每隔幾分鐘醒來完成任務,然後進入睡眠狀態。現在我想讓A也被鬧鐘管理員喚醒。Android服務生命週期
我該怎麼辦?
預先感謝您。
我有4個服務A B C和D我使A運行在一個循環中,當它初始化的時候,我在A服務中設置了警報管理器的意圖,每隔幾分鐘就啓動B C和D服務。所以A一直在跑,B,C和D每隔幾分鐘醒來完成任務,然後進入睡眠狀態。現在我想讓A也被鬧鐘管理員喚醒。Android服務生命週期
我該怎麼辦?
預先感謝您。
使每隔幾分鐘運行一個TimerTask就成爲一項粘性服務。
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run()
{
// start B, C, D
}
}, 20000, 60000); // every 60 seconds
return START_STICKY;
}
設置BroadcastReceiver
以從OS獲取警報事件。然後,在AlarmManager
的期望週期內註冊一個警報。當您的接收器從操作系統收到警報時,您可以關閉四個Service
的意圖。
在你的發射器Activity
的onCreate()
方法中設置BroadcastReceiver
,你應該很好走!
你能幫我理解它是如何工作的嗎?我可以在其他地方使用定時器,而不是onStartCommand。這是我當前的代碼A.從onStart命令轉到onHandleIntent並從那裏啓動其他服務。我如何在這裏使用它? @Override public int onStartCommand(Intent intent,int flags,int startId){ \t super.onCreate(); \t super.onStartCommand(intent,flags,startId); \t return START_STICKY; } – user973743