DeadObjectException与导致NullPointerException之间的区别

Jee*_*ter 8 java android

DeadObjectException和a 之间有什么区别NullPointerException?我想我可以理解,但我只是想确定一下.


我的理解

一个DeadObjectException发生在你试图做出一些参考(和记忆仍然存在),但目前还没有任何持有其地址指针,所以没有办法达到这个记忆.它NullPointerException与内存仍然有效的事实不同,没有办法达到它.


我有正确的想法吗?根据网站上的其他问题:

我认为我的断言是正确的,我只想确定.

njz*_*zk2 -2

远程对象(例如IBinder)是与另一个进程中的对象绑定的对象。

当您调用它的方法时,它充当另一个对象的代理。(您不是直接调用它的方法,而是要求该代理传输您的意图并为您检索结果。)。

当远程对象断开连接时,代理无法再到达该对象,但代理对象仍然存在于本地。

你持有的实例仍然存在(所以,不是NPE。只要你对实例有引用,它就不会消失。不可能持有引用并看到实例消失(某些对象将允许类似的行为,例如WeakReference),所以你永远无法得到NPE)。

然而,它指的是不再存在的东西。原则上类似于 NPE,但级别更高(并且与 Android 操作系统及其处理进程间通信的方式纠缠在一起)。

NPE 是当你这样做时会发生的事情

MyObject foo = null;
foo.something();
Run Code Online (Sandbox Code Playgroud)

foo不是一个对象,它是一个空引用。