当前位置: 首页 > 知识库问答 >
问题:

30分钟后,当我的应用程序处于后台时,IntentService被终止

姚昊焱
2023-03-14

我创建了一个自定义后台服务,它正在扩展IntentService。当我的应用程序进入后台时,我会调用这个类。startService()。Firsly onStartCommand在我返回START_STICKY的地方被调用(就像我读过一些其他帖子,以保持我的服务处于活动状态,并在由于内存不足而被终止时根据需要重新创建)。在那之后,我将实现onHandleIntent(intent)方法,从调用者intent中获取额外的内容,在这里我将启动一个计时器,每分钟运行一次,并执行简单的代码。但这里的问题是,当应用程序处于后台时,30分钟后,我的服务被终止,而不是重新创建。这是我代码的一部分,所以任何建议都是完美的。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    return START_STICKY;
}

@Override
protected void onHandleIntent(Intent workIntent) {
    //here I'm initializing the Timer
}

class UpdateTimeTask2 extends TimerTask {
     public void run() {
         backgroundTimer();//here I'm doing some simple coding
     }
}

共有2个答案

孔星宇
2023-03-14

在这种情况下,您只需要一个正常的服务和一个处理程序。正如Pankaj所写,IntentService不是长时间运行操作的设计者。然后,您可以使用处理程序的postDelayed方法每分钟执行一次代码。

吕永寿
2023-03-14

所以,正如库马尔所说,我应该扩展服务,而不是意图服务。服务的调用与IntentService的调用相同,唯一的区别是服务类所需的未实现方法。我还使用了Handler的postDelayed方法,而不是Timer,在OnStartCom中,我返回START_STICKY。所以这项服务根本没有被终止。有用的代码可以在这里和这里找到。我希望这有帮助。

 类似资料: