在我的应用程序中,我有一个活动和一个服务(扩展了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系统会在内存可用时自动重启服务。我错过了什么或者我应该再等一会儿。
提前致谢
答案 0 :(得分:1)
如果你看过这个IntentService,你会看到
onStartCommand(Intent intent,int flags,int startId)
您不应该为IntentService重写此方法。
相反
IntentService类的存在是为了简化这种模式并处理机制。 要使用它,请扩展IntentService并实现onHandleIntent(Intent)。
答案 1 :(得分:0)
根据IntentService文档:
客户通过
startService(Intent)
电话发送请求;服务根据需要启动,使用工作线程依次处理每个Intent
,并在工作失败时自行停止。
如果您自己绑定服务和/或控制服务的生命周期,那么您应该使用Service
而不是IntentService
。