我最初通過代碼在我的主要活動中註冊了我的廣播接收器。但是,我有IntentServices(在後臺運行)廣播意圖,因此需要廣播接收器始終可用。我的代碼註冊接收器的方法工作正常,直到後退按鈕被按下。然後,接收人將被註銷,因爲主要活動將被破壞。奇怪的廣播接收器行爲
因此,我的想法是將接收器的聲明移到Manifest文件。但是,我遇到了一個奇怪的問題,每次我的代碼廣播一個意圖時,都會創建一個廣播接收器的新實例。我想要的是,廣播接收器的一個實例始終可用。這是因爲我的廣播接收機創建並啓動了一個定時器,但是如果創建了多個接收機實例,那麼將創建多個定時器,這是不好的。
注意:我的廣播接收器的單個實例可以處理收到意圖但計時器已經啓動的情況。
這是我在清單文件代碼:
<receiver android:name=".StartTimerBroadcastReceiver" android:enabled="true" >
<intent-filter>
<action android:name="START_TIMER" />
</intent-filter>
</receiver>
這裏是我的代碼,廣播意圖:
Intent broadcastIntent = new Intent("START_TIMER");
broadcastIntent.putExtra("timerID", "timer1");
sendBroadcast(broadcastIntent);
難道我做錯了什麼?任何幫助表示讚賞。謝謝
感謝您的支持。我會研究這2個選項。在我的情況下,有一些靜態方法的定時器處理程序類可能是可以接受的,因爲我希望能夠儘可能簡單地在整個應用程序中使用單個定時器。我首先使用intent廣播的基本原理是,我不必將定時器對象深入到代碼中。然而,我認爲一個正確實現的定時器處理程序,允許其他對象通過靜態方法啓動定時器將是好的:) – jtnire 2012-03-15 05:17:55