题
我有一个相当好奇的问题。我有一个非绑定服务,当应用程序打开时,我使用主要活动中的以下代码调用该服务。
//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 方法永远不会被调用。唯一的解决方法是重新启动手机。
问题是,当它处于这种状态时,它不起作用。(它的意思是解析传入的短信)
我在 Galaxy Note 3 上运行 Android 4.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
解决方案
这可能不是一个非常优雅的解决方案,但您可以调用 stopSelf()
直接在服务中 onCreate()
方法并处理其中的实际操作 onDestroy()
打电话之前 super.onDestroy()
.
我有一个类似的问题,我用这种方式解决了。也许这也能解决你的问题。祝你好运。;)
不隶属于 StackOverflow