你不應該這樣做我想。
我可以看到你的方法至少有兩個缺點: - 在alarmanager將是太忙 - 你不能註冊從另一廣播接收器
另外一個brocast接收器,更好的方式來做到這將是使用handler.postDelayed方法:
您的服務應該問一個處理器來自己又回到了幾秒鐘(如果您想)
@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
//do some treatment based on the action intent
//first action is used to compute 10 time stamps
//second action is used to treat task
//then use a handler to reschedule your service
handler.postDelayed(new Runnable() {
@Override
public void run() {
onStartCommand(<intent for action 2>, flags, startId);
Log.v(LOG_TAG, "timer sending intent");
}
}, delayInMsToNextTask );
}//met
因此,沒有辦法的研究者廣闊dcast接收器。
我忘了說你應該在你的清單文件中註冊你的兩個intent動作的服務。
<service android:name="myService">
<intent-filter>
<action android:name="action1" />
</intent-filter>
<intent-filter>
<action android:name="action2" />
</intent-filter>
</service>
而且,它可能是很好的補充單一的行動,但區別什麼onStartCommand在具有相同名稱的使用意圖演員應該做的。然後,您的服務將在您的清單中註冊一個單一操作。
下一次,如果您覺得您的解釋不太清楚,請發送一些代碼/僞代碼。
Regards, Stéphane