我正在使用Android的AlarmManager,并每分钟使用ELAPSED_TIME_WAKEUP安排重复警报。这一警报射击了服务。
服务可以完成其工作(我的情况下为服务器(Facebook服务器)获取数据)。接下来,我称之为服务的OnDestroy()。因此,每个分钟的服务开始 ->确实有效 -> ondestroy()
是在Android中执行此操作的最佳方法?
您真的每分钟都需要新服务吗?我认为您想开始单个服务。该服务每分钟检查服务器并以某种方式报告成功或错误?您需要通过定期操作始终运行服务,而不是定期服务开始。在这种情况下,启动新服务可能会比自身检查更多的资源。
只需确保服务保持运行即可。在您从中调用stopelf()并且开始活动也不会阻止它之前,这可能是例子。您可能需要以
的方式运行private ping() {
// periodic action here.
scheduleNext();
}
private scheduleNext() {
mHandler.postDelayed(new Runnable() {
public void run() { ping(); }
}, 60000);
}
int onStartCommand(Intent intent, int x, int y) {
mHandler = new android.os.Handler();
ping();
return STICKY;
}
您可能只需要定期检查WiFi连接或存在的连接。也许停止检查您何时已经知道问题并正在解决问题。您可能需要使用Service从Service开始进行一些活动来控制它并显示结果。