无论如何,服务都不会被杀死

时间:2014-01-11 02:20:30

标签: android intentservice

我有一个相当好奇的问题。我有一个非绑定服务,我在打开应用程序时使用我的主要活动中的代码调用。

//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上运行它

Hanging Service

我怀疑进行实际解析的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

1 个答案:

答案 0 :(得分:0)

这可能不是一个非常优雅的解决方案,但您可以直接在服务的stopSelf()方法中调用onCreate(),并在调用onDestroy()之前处理super.onDestroy()中的实际操作。

我有一个类似的问题,我这样解决了。也许这也可以解决你的问题。祝好运。 ;)