我有一個服務,我希望在後臺每分鐘執行一次任務。只要用戶正在使用它,只要手機處於睡眠狀態,它就不需要執行任務。我試圖用它被設置爲一個IntentService做到這一點如下:每分鐘運行一次的服務
public class CounterService extends IntentService{
public CounterService() {
super("CounterService");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent,flags,startId);
}
@Override
protected void onHandleIntent(Intent intent) {
Toast.makeText(this, "onhandleintent", Toast.LENGTH_SHORT).show();
while(true)
{
//one minute is 60*1000
try {
Thread.sleep(5 * 1000);
Toast.makeText(getApplicationContext(), "getting app count", Toast.LENGTH_LONG).show();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
現在得到的功能工作,我只是希望它顯示舉杯每5秒鐘,我會在稍後將其更改爲一分鐘。如果我將while(true)
註釋掉,則會顯示「onhandleintent」消息。但是,如果我有以下代碼運行,則沒有任何Toasts顯示。我怎樣才能解決這個問題?
考慮使用PendingIntent和AlarmManager而不是while循環。有關更多信息,請參閱文檔。這是一個[SO帖子](http://stackoverflow.com/questions/3052149/using-alarmmanager-to-start-a-service-at-specific-time),顯示了一個例子。 – Vino