首页 > 解决方案 > 每 X 秒触发一次 Intent 服务,性能有何不同?

问题描述

我知道有很多方法可以每隔 x 秒调用一个函数或安排一个作业。我的问题是最适合我的问题的解决方案是什么?

我有一个繁重的任务,我想在后台线程中运行(数据库查询,进行 HTTP 调用)。

为此,我使用了一个,IntentService因为它的onHandleIntent函数在后台工作线程中运行,并且启动的服务已排队。

队列对我来说并不重要,因为startService()只会从一个地方调用。

现在,我想经常启动这项服务,大约 10-15 秒。

这是我的旧解决方案:

class MyService extends IntentService {
  @Override
  protected void onHandleIntent(Intent intent) {
    mutex = new Object();
    while(isServiceRunning) {
      doTheBigJob();
      syncrhonized (mutex) {
        mutex.wait(15000);
      }
    }
  }
}

我认为这是不好的做法。

现在我的 Intent 服务只包含doTheBigJob(). 但是我应该如何安排我的startService()通话时间,让这种情况永远每 15 秒发生一次。什么是最优化的方式?

这是一个 KIOSK 应用程序,因此它始终位于前台,用户无法逃脱。

标签: androidserviceintentserviceandroid-handler

解决方案


推荐阅读