2011-04-29 74 views
0

正如我今天的代碼所示,我使用AlarmManager週期性地發送了一個警報(?),接收到這個警報,然後啓動服務。該服務進行一些更新並以stopSelf()結束。海事組織這是定期執行任務而無需持續運行服務的最佳方式。正確?在啓動時啓動Android服務和PreferenceChange

但是,此代碼的問題是,整個事件鏈發起onSharedPreferenceChanged()。我(最初)認爲這是一個好主意,因爲用戶在SharedPreferences中啓用了整個更新。 我現在得出的結論是,這實際上並不是很好,我需要啓動AlarmManager/AlarmReceiver/Service /無論是onPreferenceChange還是啓動。

我已經做了一些搜索,但似乎每個人都想在啓動時啓動服務。正如我所看到的,我只需要啓動AlarmManager,然後啓動服務(在需要時並且只是定期)。

請首先幫我解決這個問題,然後編碼! 在此先感謝!

回答

3

然後,創建並註冊一個BroadcastReceiver在那裏你會做AlarmManager東西:

public class YourBootReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // do the AlarmManager here 
    } 
} 

然後,在你的清單:

<application> 
    ... other stuff 
    <receiver android:name=".YourBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 
</application> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

謝謝!我現在的代碼呢?我應該保留它嗎?在我看來,這種方法可能會讓我最終走向報警管理器(每個按照用戶定義的時間間隔發射報警),使更新運行的次數達到預期的兩倍...? – Adam 2011-04-30 09:16:44