2016-08-30 2 views

Antwort

4

Sie können runOnUiThread verwenden:

runOnUiThread(new Runnable(){ 
     public void run() { 
      // Your code 
     } 
    }); 

Oder

Handler mainHandler = new Handler(context.getMainLooper()); 

Runnable myRunnable = new Runnable() { 
    @Override 
    public void run() { 
     // Your code 
    } 
}; 
mainHandler.post(myRunnable); 

developer.android.com

In der vorherigen Lektion haben Sie gelernt, wie eine Aufgabe von ThreadPoolExecutor verwaltet auf einem Thread zu starten. In dieser letzten Lektion erfahren Sie, wie Sie Daten von der Aufgabe an Objekte senden, die auf dem UI-Thread ausgeführt werden. Mit dieser Funktion können Ihre Aufgaben Hintergrundarbeiten ausführen und die Ergebnisse dann in UI-Elemente wie Bitmaps verschieben.

Jede App hat ihren eigenen speziellen Thread, der UI-Objekte wie View-Objekte ausführt; Dieser Thread wird als UI-Thread bezeichnet. Nur Objekte, die im UI-Thread ausgeführt werden, haben Zugriff auf andere Objekte in diesem Thread. Da Aufgaben, die Sie in einem Thread aus einem Thread-Pool ausführen, nicht in Ihrem UI-Thread ausgeführt werden, haben sie keinen Zugriff auf UI-Objekte. Verwenden Sie zum Verschieben von Daten von einem Hintergrundthread in den Benutzeroberflächenthread einen Handler, der im Benutzeroberflächenthread ausgeführt wird.

+0

Ich möchte nur wissen, warum die App nicht stürzte, wenn die Tastatur in TimerTask geöffnet wurde –