在android中每分钟启动一项服务的最佳实践是什么?

在android中每分钟启动一项服务的最佳实践是什么?,android,performance,android-service,android-alarms,Android,Performance,Android Service,Android Alarms,我正在使用Android的AlarmManager,并使用每分钟经过的时间来安排重复的警报。这个警报触发了一个服务 服务完成了它的工作(ping服务器(在我的例子中是Facebook服务器)以获取数据)。接下来我调用该服务的onDestroy()。因此,每分钟服务都会启动->运行->onDestroy() 在安卓系统中实现这一点的最佳方式是什么?你真的每分钟都需要新的服务吗?我想你想开始单人服务。该服务每分钟都在服务器上检查并报告成功或错误?您希望简单的、始终运行的、具有周期性操作的服务,而不是

我正在使用Android的AlarmManager,并使用每分钟经过的时间来安排重复的警报。这个警报触发了一个服务

服务完成了它的工作(ping服务器(在我的例子中是Facebook服务器)以获取数据)。接下来我调用该服务的onDestroy()。因此,每分钟服务都会启动->运行->onDestroy()


在安卓系统中实现这一点的最佳方式是什么?

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

只要确保服务保持运行。这种情况可能会发生,直到您从中调用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连接或连接是否存在。当你们已经知道问题并正在解决它时,也许停止检查。您可能希望使用服务中的startForeground()启动一些活动来控制它并显示结果。

获得服务器更改通知的最佳方法是使用,这样您就不必让设备保持清醒并弄乱电池。是的。但如果我在电话里说的话。这是最好的方法吗?如果这是你必须做的,是的。一个简单的意图服务不需要处理ondestroy,它只需在处理完一个indentGCM后关闭,这是通知设备服务器上任何更改的标准方式,如果这是您需要的话。实际上,服务器是“Facebook”。我每分钟都在进行Facebook API调用。