Diferencia entre DeadObjectException y causar una excepción NullPointerException
¿Cuál es la diferencia entre la DeadObjectException
y una NullPointerException
? Creo que puedo entender, pero sólo quería estar seguro.
Mi entendimiento
- ¿Cómo proceso las emisiones que se enviaron mientras mi actividad se detuvo?
- Tipo de excepción no controlada JSONException
- Body.setTransform no funciona dentro del oyente de contacto (andEngine y box2d)
- Cómo rotar un RelativeLayout por 180 grados?
- Rotar de forma programable o dibujar
Una DeadObjectException
ocurre cuando se intenta hacer una referencia a algo (y la memoria sigue existiendo) pero no hay ningún puntero que contenga su dirección, por lo que no hay manera de alcanzar esa memoria. Es diferente de una NullPointerException
en el hecho de que la memoria sigue siendo válida, no hay manera de alcanzarla.
¿Tengo la idea correcta? Basado en otras preguntas en el sitio:
- Cuando android desvincular un servicio que creé
- Fugas de memoria en Android
Creo que mi afirmación es correcta, sólo quería asegurarme.
- El resultado de 'File.mkdirs ()' se ignora
- ¿Qué tan seguro es el almacenamiento interno?
- ¿Hay alguna manera de hacer que SharedPreferences sea global en toda mi aplicación para Android?
- BATTERY_PROPERTY_CURRENT_NOW no funciona en todos los dispositivos. ¿Qué son las alternativas?
- File.delete () se ignora
- Experiencia con Vaadin touchkit
- ¿Cómo se utiliza un OnClickListener en una vista de reciclador?
- Android Geofencing BroadcastReceiver no activado
Un objeto remoto (por ejemplo, un IBinder
) es un objeto que está atado a un objeto que puede estar en otro proceso.
Cuando llama a métodos en él, actúa como un proxy para ese otro objeto. (En lugar de llamar directamente a los métodos, pida que el proxy transmita su intención y obtenga el resultado para usted).
Cuando el objeto remoto se desconecta, el proxy ya no puede alcanzar el objeto, pero el objeto proxy sigue presente localmente.
La instancia que usted tiene todavía existe (por lo tanto, no es un NPE) Siempre y cuando usted tiene una referencia en la instancia, no puede desaparecer Es imposible mantener una referencia y ver desaparecer la instancia (algunos objetos permitirá un comportamiento similar, Tales como WeakReference), por lo que nunca podría obtener y NPE).
Sin embargo, se refiere a algo que ya no es. En principio se asemeja a la NPE, pero es mucho más alto nivel (y enredado en el sistema operativo Android y la forma en que maneja la comunicación entre procesos).
NPE es lo que sucede cuando lo hace
MyObject foo = null; foo.something();
foo
no es un objeto es una referencia nula.
NullPointerException es cuando una referencia no apunta a ningún objeto dentro de la misma máquina virtual Java .
DeadObjectException es cuando uno llama a un objeto remoto que ya no existe. Esto ocurre en 2 JVM diferentes.
NullPointerException – Se activa cuando un programa intenta acceder a un campo o método de un objeto o un elemento de una matriz cuando no hay ninguna instancia de un objeto o matriz que se va a utilizar. Android.os.DeadObjectException – De developer.android.com: Como se extiende RemoteException El objeto que está llamando ha muerto, porque su proceso de alojamiento ya no existe.
Por ejemplo: Copied 🙂 su buen ejemplo para entenderlo bien.
Tiene clases MyActivity y MyService. Utiliza Handler / Messenger para comunicarse entre ellos. Crea Handler y Messenger en MyActivity y, a continuación, envía instancia creada de Messenger a MyService a través de Intent. Entonces haces algunas cosas, el tiempo pasa, y tu MyActivity se destruye, junto con su Handler y Messenger. Ahora, si no manejas bien, MyService no sabrá que el Messenger que tiene ya no es válido, así que intenta enviar algo a través de él y obtiene DeadObjectexception:
/ * Enviar un mensaje a este manejador de Messenger.
Parámetros: message El mensaje a enviar. Se recupera generalmente a través de Message.obtain (). Throws: RemoteException lanza DeadObjectException si el controlador de destino ya no existe. * /
Public void send (Mensaje de mensaje) throws RemoteException {…}
- La solicitud ajax de Aquery no parece comenzar en android
- Cómo codificar un WAV a un mp3 en un dispositivo Android