2013-02-03 43 views
1

我有延伸BroadcastReceiver一個類,並在這個類的onReceive方法我有這樣的代碼之後:如何發送延遲廣播接收器x秒

Intent autoBoostIntent = new Intent(); 
autoBoostIntent.setAction(Values.ACTION_AUTO_BOOST); 
context.sendBroadcast(autoBoostIntent); 

走秀的purspose再調用同一個廣播接收器課程一遍又一遍地與特定的action。問題是,我想延遲上述過程,因此例如每10秒發送一次廣播。這可能嗎?

編輯:我希望廣播無限循環,無論設備是否喚醒(鍵盤解鎖)。

回答

1

簡而言之,您可以在您的代碼中添加一個Thread.sleep(10000),這將導致線程在繼續執行下一個操作之前休眠10秒。

但是,如果您使用的是BroadcastReceivers,則可以將應用程序擴展爲使用AlarmManager類,該類將在設定的時間觸發廣播(您可以從現在開始以編程方式將其設置爲10秒)。您可以使用Handler

+2

作爲一個setRepeatingAlarm方法的AlarmManager使用+1。 BroadcastReceivers不允許長時間運行(我相信時間限制是10秒)。如果他們跑的時間比這次長,他們將被操作系統殺死。所以處理程序和睡覺線程可能不可靠。此外,在UI線程上使用Thread.sleep()可能會導致您的應用程序無法響應用戶。 – cottonBallPaws

+3

'此外,在UI線程上使用Thread.sleep()可能會導致您的應用程序無法響應用戶。它會。 :) –

+0

..此外AlarmMAnager不推薦用於短時間間隔。 使用異步任務(帶處理程序)而不是延遲。 – auval