Android – myLooper () vs getMainLooper ()

Sólo aclarar, pero en una actividad de Android en el hilo principal si llamo Looper.myLooper () vs Looper.getMainLooper () el retorno de la misma referencia, ¿verdad? Ellos son la misma cosa ? Sé que nunca tendría que llamar a estos normalmente como android se ocupa de esto, pero me gustaría saber cómo se diferencian cuando se llama desde el hilo principal?

Si desde el hilo principal llamo

Looper.myLooper().quit(); // or Looper.getMainLooper().quit(); 

Ambos dan la misma excepción de tiempo de ejecución, por lo que im asumiendo que son la misma referencia:

 Caused by: java.lang.RuntimeException: Main thread not allowed to quit. 

¿Alguien puede confirmar?

Usted lo ha descrito en los documentos:

GetMainLooper ()

Devuelve el looper principal de la aplicación, que vive en el subproceso principal de la aplicación.

MyLooper ()

Devuelve el objeto Looper asociado al subproceso actual. Devuelve null si el subproceso de llamada no está asociado con un Looper.

En cuanto a si getMainLooper () es de cualquier uso, puedo asegurar que realmente lo es. Si hace algún código en un subproceso de fondo y desea ejecutar código en el subproceso de interfaz de usuario, por ejemplo, actualizar la interfaz de usuario, utilice el código siguiente:

 new Handler(Looper.getMainLooper()).post(new Runnable() { // execute code that must be run on UI thread }); 

Por supuesto, hay otras maneras de lograr eso.

Otro uso es, si desea comprobar si el código ejecutado actualmente se ejecuta en el subproceso de interfaz de usuario, por ejemplo, desea lanzar / confirmar:

 boolean isUiThread = Looper.getMainLooper().getThread() == Thread.currentThread(); 

o

 boolean isUiThread = Looper.getMainLooper().isCurrentThread(); 

Looper.getMainLooper() es la conveniencia API para obtener looper que se adjunta al hilo principal de la activity.It es útil cuando desea excute algún código en el hilo principal de un hilo de fondo.

Por lo general se utiliza de la siguiente manera:

 new Handler(Looper.getMainLooper()).post(task); 

Looper.myLooper() es api para obtener looper conectado a la corriente de hilo

Si llama a estos dos métodos en el main thread , son el mismo objeto! Puede encontrar respuestas en el código fuente de ActivityThread.java , Looper.java y ThreadLocal.java .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.