KIO
Kreative Ideen online
Mithilfe von Handlern können Sie Code planen

Mithilfe von Handlern können Sie Code planen

In Nicht-Android-Java können Sie Aufgaben wie die Verwendung eines Hintergrundthreads ausführen. In Android wird dieser Ansatz nicht funktionieren – nur der Haupt-Android-Thread kann die Benutzeroberfläche aktualisieren, und wenn ein anderer Thread versucht, dies zu tun, erhalten Sie eine CalledFromWrongThreadException.

Die Lösung besteht darin, einen Handler zu verwenden.

Mithilfe von Handlern können Sie Code planen

Ein Handler ist eine Android-Klasse, mit der Sie Code planen können, der zu einem späteren Zeitpunkt ausgeführt werden soll. Sie können es auch verwenden, um Code zu posten, die auf einem anderen Thread als dem Haupt-Android-Thread ausgeführt werden muss. In unserem Fall verwenden wir einen Handler, um den Stoppuhrcode jede Sekunde auszuführen.

Um den Handler zu verwenden, umschließen Sie den Code, den Sie in einem Runnable-Objekt planen möchten, und verwenden Sie dann die Handler post() und postDelayed()-Methode, um anzugeben, wann der Code ausgeführt werden soll.

Die post()-Methode

Die post()-Methode bucht Code, der so schnell wie möglich ausgeführt werden muss (was in der Regel fast sofort der Nachlauf ist). Diese Methode verwendet einen Parameter, ein Objekt vom Typ Runnable. Ein Runnable-Objekt ist ein Auftrag, den Sie ausführen möchten. Sie setzen den Code, den Sie ausführen möchten, in die Runnable-Methode() und der Handler stellt sicher, dass der Code so schnell wie möglich ausgeführt wird.

So sieht die Methode aus:

finalHandler handler = new Handler();
handler.post(Runnable);

Die postDelayed()-Methode

Die postDelayed()-Methode funktioniert ähnlich wie die post()-Methode, außer dass Sie sie für Postleitzahlen verwenden, die in Zukunft ausgeführt werden sollen. Die postDelayed()-Methode verwendet zwei Parameter: eine Runnable und eine Long. Die Runnable enthält den Code, den Sie in der run()-Methode ausführen möchten, und die Long gibt die Anzahl der Millisekunden an, um die Sie den Code verzögern möchten. Der Code wird so schnell wie möglich nach der Verzögerung ausgeführt.

So sieht die Methode aus:

final Handler Handler = new Handler();
handler.postDelayed(Runnable, long);

Verwendungsbeispiel:

Private void runTimer()"
  endgültige TextView timeView = (TextView)findViewById(R.id.time_view);
  Erstellen Sie einen neuen Handler.  
  finalHandler handler = neuer Handler();
         /*Rufen Sie die post()-Methode auf und übergeben Sie eine neue Runnable. Die post()-Methode prosesses code
         ohne Verzögerung, so dass der Code in der Runnable fast sofort ausgeführt wird*/
         handler.post(neue Runnable()"
          @Override

          /*Die Runnable run()-Methode enthält den Code, den Sie ausführen möchten - in unserem Fall 
             den Code zum Aktualisieren der Textansicht.*/ 
           Öffentlicher void run()"
                   int Stunden = Sekunden/3600;
                   int Minuten = (Sekunden%3600)/60;
                   int secs = Sekunden%60;
                   String time = String.format(Locale.getDefault(),
                                         "%d:%02:%2d", Stunden, Minuten, Sek.);
                   timeView.SetText(Zeit);
                   if(running)"
                        Sekunden++;
                   }
                   /*Posten Sie den Code in der Runnable, um nach einer Verzögerung von 1000 Millisekunden erneut ausgeführt zu werden.
                   Da diese Codezeile in der Runnable run()-Methode enthalten ist, 
                   es wird immer wieder angerufen.*/
                   handler.postDelayed(dies, 1000);
      }
}};
}      
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert