2013-08-12 76 views
0

我创建了一个自定义的后台服务,谁在扩展IntentService。当我的应用程序通过.startService()转到后台时,我正在调用这个类。在我返回START_STICKY的时候调用了第一个onStartCommand(就像我读过其他一些文章,以保持我的服务活着并在由于内存不足而死的情况下在需要时重新创建)。之后,我实现了onHandleIntent(intent)方法,我从调用者的意图中获取额外的内容,在这里我开始一个Timer来运行每分钟,并执行简单的代码。但问题在于,当应用程序处于后台时,30分钟后我的服务被杀死,不会重新创建。这是我的代码的一部分,所以任何建议都是完美的。IntentService在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 
    } 
} 
+0

IntentService不是为了..使用服务,而不是 –

+0

好吧,我现在会尝试。 – Slavcho

回答

2

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

1

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

相关问题