目前,我已經得到了擴展的是這種服務一個單獨的類:使用類似運行的方法Android的最佳途徑定期
public class ServiceSingleton extends Service {
private static ServiceSingleton instance;
private static boolean serviceSt;
private static PrefValues preferences;
private static Context context;
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
public static ServiceSingleton getInstance(Context cont) {
if (instance == null) {
context = cont;
// Some code
}
return instance;
}
所以基本上我跑在這個類約每30分鐘的一些方法這個:
private static void oneTasks() {
//task itself
}
private static void oneService() {
if (!serviceSt) {
serviceRunning = false;
return;
}
serviceRunning = true;
oneTasks();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
oneService();
}
}, (INTERVAL));
}
我也聽說AlarmManager
可以做同樣的事情。 無論如何,我的問題是,如果我運行週期性方法,調用方法的方式是最好的方法(尤其是考慮電池使用情況)?
從AlarmManager文檔:'注意事項:報警管理器用於您想擁有情況即使您的應用程序當前未運行,您的應用程序代碼也會在特定時間運行。對於正常的計時操作(滴答,超時等),使用Handler更容易,效率更高。' – nhaarman
我會使用'Executor' ... http://docs.oracle.com/javase/7/docs /api/java/util/concurrent/Executor.html – bblincoe