Java android服务中的android.os.deadobjectexception

Java android服务中的android.os.deadobjectexception,java,android,service,Java,Android,Service,我有一个应用程序,它从服务中获取数据值(坐标),工作正常,但在大约7或8分钟后崩溃 在logcat中,出现了很多这样的消息: 02-24 09:50:35.761:E/RemoteException(6395):android.os.DeadObjectException 这些消息来自应用程序而不是服务,但我想这是因为服务失败 [更新] 有了这些评论,我更明白问题是由服务失败引起的,但我读了这个问题(与我的问题类似),但答案。。。这让我有些困惑 这是我的ondestroy(): 我如何知道哪个元

我有一个应用程序,它从服务中获取数据值(坐标),工作正常,但在大约7或8分钟后崩溃

在logcat中,出现了很多这样的消息:

02-24 09:50:35.761:E/RemoteException(6395):android.os.DeadObjectException

这些消息来自应用程序而不是服务,但我想这是因为服务失败

[更新]

有了这些评论,我更明白问题是由服务失败引起的,但我读了这个问题(与我的问题类似),但答案。。。这让我有些困惑

这是我的
ondestroy():


我如何知道哪个元素关闭了我的服务?

当父进程停止时,您正在使用内存中不再存在的对象实例。

将此添加到服务类中。这将阻止应用程序崩溃。”当应用程序从ram中删除时,将触发onTaskRemoved

@Override
    public void onTaskRemoved(Intent rootIntent){
        stopSelf();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        super.onTaskRemoved(rootIntent);
    }

 @Override
    public void onDestroy() {
        super.onDestroy();
//Your Runnable
        mRunnable=null;
    }

你呼叫的对象已死亡,因为它的托管进程已不存在。请访问此网站,我将更新de Post。我认为您的服务已停止,因为它绑定到的活动已被销毁。因此,解决方案是在Activities
onDestroy
中停止该服务?是的,如果活动完成后您不需要它,否则您可以在Destroy中解除服务绑定并保留它服务正在运行,但要访问服务实例,请记住将实例设置为静态。为什么这里需要Thread.sleep?谢谢
@Override
    public void onTaskRemoved(Intent rootIntent){
        stopSelf();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        super.onTaskRemoved(rootIntent);
    }

 @Override
    public void onDestroy() {
        super.onDestroy();
//Your Runnable
        mRunnable=null;
    }