2013-02-01 94 views
2

我有一個BroadcastReceiver其中手錶android.intent.action.BOOT_COMPLETED,android.intent.action.TIME_SETandroid.intent.action.TIMEZONE_CHANGED當手動更改時間時獲取android.intent.action.TIME_SET兩次

<receiver android:name="SystemBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.TIME_SET" /> 
      <action android:name="android.intent.action.TIMEZONE_CHANGED" /> 
      <category android:name="android.intent.category.HOME" /> 
     </intent-filter> 
</receiver> 

/**不正確,請參閱下面 每當這些動作中的一個發生時,接收器將打開活動。 除了當我改變時鐘的微小部分時,所有工作都很好,android.intent.action.TIME_SET將激活兩次,這會導致活動打開兩次。
我覺得很奇怪,因爲如果我改變時鐘的小時部分,android.intent.action.TIME_SET將激活一次。 */ 我的測試手機是Galaxy Nexus 4.2.1。這是4.2.1中的系統錯誤還是我做錯了什麼?

-----------編輯通過自己------------ 下面是一些日誌可能會有所幫助。 每當我改變分鐘,小時或日期,我的活動將啓動兩次。

02-01 21:16:11.781: D/SystemClock(9012): Setting time of day to sec=1359724560 
02-01 21:16:00.023: V/AlarmClock(8932): AlarmInitReceiver finished 
02-01 21:16:00.031: D/SystemClock(9012): Setting time of day to sec=1359724560 

我不知道爲什麼我只是在系統設置部分更改一次,但系統調用設置時間兩次。

回答

2

驗證我自己的Nexus此行爲。

然而,你不應該開始從廣播接收器的活動。我建議你使用Notifications

這樣,如果你得到的廣播兩次,這並不重要,因爲該通知只會更新,而不是重複。

+0

好主意,謝謝。 –

+0

它不會重複,但如果通知有聲音,它將播放兩次。 –