如果你有支APP有個SERVICE是可能每隔一段時間去做一次的!
那麼我建議你改用AlarmManager。
最近發現自己寫的某支APP裡面的service會被android os restart!
大概知道是因為是background service的關係,
想要讓一個service keep alive。
當然有解決方法,在2.0以前的device,
可以使用setForeground(true);
但是2.0以上,這個method,失效了。
改成startForeground(id, notification)。
但我改用了AlarmManager
原因當然有很多,像是其實啟動一個service,就是啟動一個process。
想必就消耗掉一點memory...
當然還有其他原因,大家可以去Google一下。
實作方法如下:
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
Intent intent = new Intent(context, receiverChange.class); //放入你每隔一段時間要執行的class
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
//接著就是set一個repeat,這裡是設定每隔一分鐘去執行
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() , (60*1000), pendingIntent);
}
然後您每隔一段時間要做的事情就寫在一個BroadcastReceiver裡面
public class receiverChangePicture extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("main","hi I receive message every minutes..");
}
}
這樣就完成了,但是注意此實作方法只限定於有週期性要執行的code才適用!!!!
如果今天你是要偵測sd card的狀態,那麼建議你還是用service!(就如同我上篇文章所說的)
以alarmManager來實作,只是節省一點成本罷了!