Android死对象异常

bar*_*bas 13 android memory-leaks ddms

我已经成功完成了一个android项目的实现,并开始测试应用程序的内存泄漏.有时候,我在应用程序中长途旅行后会获得deadobject异常并释放所有内存分配.我怎样才能发现这个问题?我已经对DDMS工具进行了一些研究来检测内存泄漏,由于我不知道DeadObjectExeption,我不知道从哪里开始.

提前致谢..

Mil*_*tic 31

这不是内存泄漏问题.内存泄漏的定义(来自维基百科):

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

在这里,你有一个相反的情况 - 内存在它应该被释放之前(至少从你的程序的角度来看).

来自developer.android.com:

DeadObjectException扩展了RemoteException

您呼叫的对象已经死亡,因为其托管过程不再存在.

例如:

您有MyActivity和MyService类.您使用Handler/Messenger在它们之间进行通信.您在MyActivity中创建Handler和Messenger,然后通过Intent将创建的Messenger实例发送到MyService.然后你做了一些事情,时间过去了,你的MyActivity被破坏了,还有它的Handler和Messenger.现在,如果你处理不好,MyService将不会知道他拥有的Messenger不再有效,所以,他试图通过它发送一些东西,并获得DeadObjectexception:

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

参数:

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

抛出:

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

public void send(消息消息)抛出RemoteException {...}

  • 如何防止崩溃?请建议吧. (4认同)