我有一个相当好奇的问题。我有一个非绑定服务,我在打开应用程序时使用我的主要活动中的代码调用。
//some code checks if the service is awake. if not then the code below is called
Intent serviceIntent = new Intent(this, SMS_Listener_Service.class);
startService(serviceIntent);
当新的短信进入时,服务通过计时器等待3秒,以确保内容观察者已将数据保存到内部短信数据库。之后,它会调用一个意向服务来完成繁重的工作。
由于未知原因,服务有时会挂起并卡在“重新启动(见图片)”
上奇怪的是,即使尝试强制停止应用程序部分中的服务也不起作用。它会暂时消失,然后再次显示相同的消息。在代码中使用stopService也不起作用,并且永远不会调用服务中的OnDestroy方法。唯一的办法是重启手机。
问题是当它处于这种状态时它不起作用。(它意味着解析传入的Sms消息)
我正在使用android 4.3
在Galaxy note 3上运行它“”
我怀疑进行实际解析的Intentservice没有完成,因此永远不会调用服务停止的调用。
我的问题是,有没有办法强制停止的意图服务停止?
这是服务中StartCommand中的代码
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
if (!blnAutoSyncisEnabled) {
stopSelf();
return 0;
} else {
return START_STICKY;
}
}
此处同一问题的更详细视图https://stackoverflow.com/posts/21077517/edit
答案 0 :(得分:0)
这可能不是一个非常优雅的解决方案,但您可以直接在服务的stopSelf()
方法中调用onCreate()
,并在调用onDestroy()
之前处理super.onDestroy()
中的实际操作。
我有一个类似的问题,我这样解决了。也许这也可以解决你的问题。祝好运。 ;)