首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决DeadObjectException的问题?

如何解决DeadObjectException的问题?
EN

Stack Overflow用户
提问于 2011-08-12 15:52:29
回答 2查看 21.9K关注 0票数 13

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

有时,我在应用程序中进行了一次长途旅行后得到DeadObjectException,所有的内存分配都被释放了。

如何检测此问题?

我已经研究了一些DDMS工具来检测内存泄漏,由于我对DeadObjectExeption一无所知,我不知道从哪里开始。

EN

回答 2

Stack Overflow用户

发布于 2012-11-25 02:59:25

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

在计算机科学中,当计算机程序获取内存但未能将其释放回操作系统时,就会发生内存泄漏(在此上下文中称为泄漏)。

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

来自developer.android.com:

DeadObjectException扩展了RemoteException

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

例如:

您有两个类MyActivityMyService。您使用Handler/Messenger在它们之间进行通信。

MyActivity中创建HandlerMessenger,然后通过Intent将创建的Messenger实例发送到MyService。然后你做了一些事情,随着时间的推移,你的MyActivity被销毁了,还有它的HandlerMessenger。现在,如果你处理得不好,MyService将不会知道他的Messenger不再有效,所以,他试图通过它发送一些东西,并获得DeadObjectexception

/*将消息发送到此信使的处理程序。

参数:

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

抛出:

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

public void send(Message message)引发RemoteException {...}

票数 33
EN

Stack Overflow用户

发布于 2015-08-03 12:58:20

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7037093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档