Ich habe eine Hauptklasse;
%Vor%und ein Service
%Vor%Beim Versuch, RunOnUiThread in der run-Methode dieses Dienstes zu verwenden, erhalte ich den Compilerfehler "kann keine statische Referenz auf die nicht statische Methode erstellen"
wie das zu beheben?, wie ich den Code verwende, wird hier gezeigt;
%Vor%runOnUiThread ist keine statische Methode.
Wenn Sie Ihren Lauf auf UIThread ausführen möchten, können Sie dies verwenden
Handler-Handler = neuer Handler (Looper.getMainLooper ());
Dies erstellt einen Handler für UI-Thread.
%Vor%Jetzt können Sie das überall verwenden.
%Vor% Es gibt eine sehr einfache Lösung für das obige Problem
Machen Sie einfach eine statische Referenz Ihrer Aktivität vor Ihrer onCreat()
-Methode
initialisiere es dann in deiner onCreat()
methode wie dieser
und danach musst du es nur benutzen, um dein runOnUiThread
hoffe es funktioniert.
Sie können die Instanz Ihrer Aktivität abrufen, sie an den Service übergeben und diese anstelle des Klassennamens verwenden.
kannst du dann verwenden:
%Vor% Im Allgemeinen verwenden wir diese Methode (RunOnUiThread), wenn wir versuchen, unsere Benutzeroberfläche von einem funktionierenden Thread zu aktualisieren. Aber da Sie Service hier verwenden, scheint runOnMainThread
für Ihre Situation ungeeignet zu sein.
Hier sollten Sie besser Handler verwenden. Handler ist ein Element, das dem Thread zugeordnet ist, an dem erstellt wird. Sie können einen Runnable mit Ihrem Code an den Handler senden, und dieser Runnable wird in dem Thread ausgeführt, in dem der Handler erstellt wurde.
Erstellen Sie einen Handler für Ihren Service in seinem MainThread und veröffentlichen Sie Runnables auf es / Nachrichten an es senden.
Tags und Links android multithreading