Ich versuche, ein SDK zu verwenden, das scheint, einen Handler in meinem Dienst zu erstellen.looper.prepare ein ui Thread
Eine Fehlermeldung erschien, dass ich Handler nicht erstellen kann, wenn der Thread nicht Looper.prepare()
aufgerufen hat, so dass ich Looper.prepare()
aufrufen und dieses Problem verschwinden. Dieser Dienst muss jedoch nach einiger Zeit eine Aktivität starten, und diese Looper.prepare()
scheint damit zu verfahren, da die erste UI-Funktion abstürzt und sagt, dass sie nicht von einem nicht-ui-Thread aufgerufen werden kann.
Ich bin etwas verwirrt darüber, warum das passiert, und die Forschung, die ich über Thread und Looper gemacht habe, hat mir nicht geholfen. Ich verstehe, warum wir keinen Handler erstellen können, wenn ein Looper nicht im Thread vorhanden ist, aber nicht, warum das Erstellen eines Looper die Verwendung des ui-Threads nachher verhindert.
Unter meinen Code vereinfacht:
public class MyService extends Service implement SDKCallback{
...
void callSDK(){
Looper.prepare();
SDK.run(); //Does thing I don't know about
}
@Override
SDKCallback(){
startActivity(new Intent(this, MyActivity.class);
}
}
Können Sie den Code bitte posten? – varunkr
Habe ich gerade, aber ich bin mir nicht sicher, ob es hilft. Das Problem kommt wirklich von der Interaktion zwischen Handler; Looper und der UI-Thread. – Laetan