私のサービスにハンドラを作成する必要があると思われるSDKを使用しようとしています。looper.Uiスレッドを作成する
Looper.prepare()
が呼び出されていない場合はハンドラを作成できないので、Looper.prepare()
を呼び出してこの問題が解消されるというエラーメッセージが表示されました。 しかし、このサービスではしばらくしてからアクティビティを開始する必要があります。最初のUI関数がクラッシュして、非UIスレッドから呼び出すことができないという意味で、このLooper.prepare()
が邪魔になっているようです。
なぜこれが起こっているのか、私は少し混乱しています。スレッドとルーパーで行った研究は私を助けませんでした。スレッドにルーパが存在しない場合はなぜハンドラを作成できないのですか?なぜルーパを作成すると、後でuiスレッドを使用できなくなるのでしょうか?私のコードの下
を簡素化:
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);
}
}
コードを投稿できますか? – varunkr
ちょうどやったけど、助けても分かりません。問題は実際にハンドラ間の相互作用から来ています。ルーパーとUIスレッド。 – Laetan