即使我的应用程序关闭,每分钟运行的Android服务

时间:2016-06-25 18:48:52

标签: java android

我构建了一个管理消息数据库并将其显示给用户的应用程序,我有一个基本连接到Web服务器并要求更新的服务。 即使应用程序关闭,我也需要该服务每分钟运行一次。

到目前为止,我写了以下代码:

    protected void registerAlarm() {
    Intent getUpdatesService = new Intent(this, UpdatesService.class);


    PendingIntent sender = PendingIntent.getBroadcast(this, 0, getUpdatesService, 0);

    long firstTime = SystemClock.elapsedRealtime();
    firstTime += 60 * 1000;

    AlarmManager am = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, firstTime, 60 * 1000, sender);
}

我从显示消息的活动中调用registerAlarm()。 假设使用AlarmManager运行服务evry分钟,但它不起作用。 任何人都可以帮我解决问题吗?

2 个答案:

答案 0 :(得分:1)

  

即使应用程序已关闭,我也需要该服务每分钟运行一次。

这在Android 6.0及更高版本上不实用。

  

任何人都可以帮我解决问题吗?

从战术上讲,问题在于您使用的是SystemClock.elapsedRealtime()RTC_WAKEUP。那些不匹配。使用ELAPSED_REALTIME_WAKEUP

然而:

  • 除非用户将您的应用添加到设置中的电池优化白名单

  • ,否则您的应用无法在Android 6.0+上每分钟获得控制权
  • AlarmManager在某些环境中根本不起作用,特别是Chrome OS上Android应用的当前开发者预览版(尽管我知道这是一个错误)

答案 1 :(得分:0)

你应该使用IntentService而不是Service,因为它在工作完成后自动终止,并且在后台线程上运行