Das Verständnis, was "Looper" über die in Android

Musste ich fügen Sie Looper auf den folgenden code:

public class MyRunnable implements Runnable
{
  @Override
  public void run()
  {
      Looper.prepare();
      final Looper looper = Looper.myLooper();

      new Handler().postDelayed(
          new Runnable()
          {
            @Override
            public void run()
            {
              try
              {
              }
              catch (Exception ex)
              {
              }
              finally
              {
                looper.quit();
              }
            }
          }, 100);

      Looper.loop();
  }
}

Bemerken, dass ich einen Thread innerhalb einer runnable. Die verschachtelten runnable ausgeführt durch einen Handler. Zunächst hatte ich nicht Looper, aber Android beschwert, dass ich brauchte, um Anruf-Greifer.bereiten Sie vor der Ausführung von einem anderen thread.

Lese ich bis auf "Looper", aber es scheint immer noch irgendwie kryptisch. Es scheint zu wirken wie eine Art interne messaging-pipeline. Es ist nicht klar für mich, warum dies ist notwendig, da es keine Nachrichten von meinem äußeren lauffaehig auf meine innere lauffähig. Obwohl, das ist wahr, es scheint, dass Android nur macht die harte Regel, dass, wenn Sie nennen ein thread aus einem thread, Sie MÜSSEN auch call-Looper.bereiten Sie. Auch wenn ich akzeptiere, dass als-ist, es immer noch nicht helfen zu verstehen, warum muss ich anrufen looper.Schleife und looper.beenden Sie. Wenn ich das weglasse Looper.loop, mein Handler läuft nicht und das ist das, was nicht klar ist. Was heißt "Looper".Schleife machen, die erlaubt, dass meine Hf zu laufen?

möglich, Duplikat der android: Was ist der Zweck von "Looper" und wie benutzt man es?. Ja, wenn Sie verwenden möchten, Looper, dann müssen Sie den Greifer.prepare(). Alternativen zur Verwendung von Looper sind, erstellen normal (parallel -) Gewinde oder mittels AsyncTasks. Lesen Sie das, SO link, den ich zitiert, für ein bisschen mehr hintergrund. 'Hoffe, das hilft...
Irgendwie erklärt es. Das größte problem, das ich sehe, ist die Bezugnahme auf Runnables, die als "Nachrichten". Das sind keine "Nachrichten" im traditionellen Sinne von der Welt des Programmierens, da ein Runnable ist ein ausführbares Stück code, anstatt einfach Daten mit einer Meldung an. Außerdem, das Beispiel, das Sie wies auf noch nicht einmal looper.beenden Sie die erforderlich ist, noch zeigt es, dass "Looper".die Schleife wird unendlich lange blockieren, bis "looper".beenden aufgerufen wird. "Looper" sollte definiert werden als nichts anderes als eine Warteschlange für die Ausführung von mehreren Runnables.

InformationsquelleAutor AndroidDev | 2013-07-05

Schreibe einen Kommentar