Android服务不会自行重启

时间:2015-04-14 17:56:41

标签: android

在我的应用程序中,我有一个活动和一个服务(扩展了IntentService)。服务的onStartCommand如下所示

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

我的onHandleIntent方法:

@Override
protected void onHandleIntent(Intent intent) {
   while(continueLoop){ //continueLoop is controlled by the Binder
          //Do stuff
   }
}

我还从活动绑定到服务,所以我可以打破无限循环。我启动了应用程序及其服务,然后启动了其他应用程序,一段时间后我的Activity被停止并销毁,我的服务也是如此。当我使用任务管理器关闭其他应用程序时,该服务不会自动启动。

我等待,然后启动我的应用程序,一旦活动启动服务也开始了。我以为android系统会在内存可用时自动重启服务。我错过了什么或者我应该再等一会儿。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果你看过这个IntentService,你会看到

  

onStartCommand(Intent intent,int flags,int startId)
  您不应该为IntentService重写此方法。

相反

  

IntentService类的存在是为了简化这种模式并处理机制。 要使用它,请扩展IntentService并实现onHandleIntent(Intent)。

答案 1 :(得分:0)

根据IntentService文档:

  

客户通过startService(Intent)电话发送请求;服务根据需要启动,使用工作线程依次处理每个Intent,并在工作失败时自行停止。

如果您自己绑定服务和/或控制服务的生命周期,那么您应该使用Service而不是IntentService