当我的应用程序处于后台时,IntentService会在30分钟后被杀死

时间:2013-08-12 08:43:00

标签: android intentservice background-service

我已经创建了一个自定义后台服务,他正在扩展IntentService。当我的应用程序通过.startService()转到后台时,我正在调用此类。首先调用onStartCommand,我将返回START_STICKY(就像我已经阅读了一些其他帖子以保持我的服务处于活动状态,并在需要时因内存不足而重新创建)。之后我正在实现onHandleIntent(intent)方法,我从调用者意图中获取额外内容,这里我开始运行Timer来每分钟运行并执行简单的代码。但问题是,当应用程序处于后台时,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 个答案:

答案 0 :(得分:2)

因此,正如Kumar所说,我应该扩展Service而不是IntentService。调用服务与调用IntentService相同,唯一的区别是Service类所需的未实现方法。我也使用Handler的postDelayed方法而不是Timer,也在onStartComand中我正在返回START_STICKY。所以服务根本没有被杀死。有用的代码可以找到herehere。我希望这会有所帮助。

答案 1 :(得分:1)

在这种情况下,您应该只需要正常的服务和处理程序。正如Pankaj所写,IntentServices不是设计用于长期运营的。然后,您可以使用Handler的postDelayed方法每分钟执行一次代码。