Android 如何解决DeadObjectException的问题?

Android 如何解决DeadObjectException的问题?,android,memory-leaks,ddms,Android,Memory Leaks,Ddms,我已经成功地完成了一个Android项目的实施,并开始测试应用程序的内存泄漏 有时,在应用程序中长途旅行后,我会得到DeadObjectException,所有内存分配都被释放 如何检测此问题 我对检测内存泄漏的DDMS工具做了一些研究,因为我不知道从哪里开始。这不是内存泄漏问题。内存泄漏的定义(来自Wikipedia): 内存泄漏,在计算机科学中(或在此上下文中为泄漏), 当计算机程序获取内存但无法释放内存时发生 回到操作系统 在这里,情况正好相反——内存在应该释放之前就被释放了(至少从程序的

我已经成功地完成了一个Android项目的实施,并开始测试应用程序的内存泄漏

有时,在应用程序中长途旅行后,我会得到
DeadObjectException
,所有内存分配都被释放

如何检测此问题


我对检测内存泄漏的DDMS工具做了一些研究,因为我不知道从哪里开始。

这不是内存泄漏问题。内存泄漏的定义(来自Wikipedia):

内存泄漏,在计算机科学中(或在此上下文中为泄漏), 当计算机程序获取内存但无法释放内存时发生 回到操作系统

在这里,情况正好相反——内存在应该释放之前就被释放了(至少从程序的角度来看是这样)

来自developer.android.com:

DeadObjectException扩展了RemoteException

您正在调用的对象已死亡,因为其宿主进程已不存在。

例如:

您有类
MyActivity
MyService
。您可以使用
处理程序
/
信使
在它们之间进行通信

您可以在
MyActivity
中创建
Handler
Messenger
,然后通过
Intent
将创建的
Messenger
实例发送到
MyService
。然后你做一些事情,时间流逝,你的
MyActivity
和它的
Handler
Messenger
一起被销毁。现在,如果您处理得不好,
MyService
将不知道他拥有的
Messenger
不再有效,因此,他尝试通过它发送一些内容,并获取
DeadObjectexception

/* 向此Messenger的处理程序发送消息

参数:

message要发送的消息。通常通过Message.get()检索

抛出:

如果目标处理程序不再存在,RemoteException将抛出DeadObjectException。*/

公共无效发送(消息消息)引发RemoteException{…}


如果您正在从本机库(.so文件)调用任何函数,只需检查创建JNI函数时使用的包名是否与在Java类中声明本机方法相同。

在android中,我知道这将发生在我的应用程序主进程和子进程之间。当它发生在同一进程中的一个线程和另一个线程之间时如何?如何防止崩溃?请推荐一下。