在android中每分钟启动服务的最佳做法是什么?

时间:2014-01-24 12:37:27

标签: android performance android-service android-alarms

我正在使用Android的AlarmManager并使用elapsed_time_wakeup每分钟安排重复闹钟。此警报触发服务。

服务完成其工作(ping服务器(在我的情况下为Facebook服务器)以获取数据)。接下来我调用服务的onDestroy()。所以每一分钟服务开始 - >工作 - >的onDestroy()

这是在android中执行此操作的最佳方式吗?

1 个答案:

答案 0 :(得分:1)

你真的每分钟都需要新服务吗?我想你想开始单一服务。该服务每分钟检查服务器并以某种方式报告成功或错误?您希望简单的始终运行服务具有定期操作,而不是定期服务启动。在这种情况下,启动新服务可能会消耗比检查自身更多的资源。

确保服务保持运行。这可能是这种情况,直到你从它调用stopSelf()并且启动活动也不会停止它。您可能希望将其作为

运行
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中的startForeground()来启动一些活动来控制它并显示结果。