にアクセスすると、スレッドで作成されたハンドラにアクセス中にnullポインタ例外が発生することがあります。ハンドラの作成を同期させて、
私は2つのアプローチを使用しています。
私はハンドラを作成し、サービスメソッドでアクセスするスレッドを持つサービスです。 2番目のスレッドはアクティビティで作成されています。スレッドでは、スレッドを作成し、起動し、ハンドラを作成します。
問題は非常に簡単で、ハンドラはメインスレッドとは非同期で作成されます。そして私はメイン(GUIスレッド)でアクセスしているので、時にはそれが作成され、時には取得時にnullになることがあります。
(ハンドラ== null){ } 私はguiスレッドで作成できましたが、それは本当に悪い解決策です。私はこれを行うためのエレガントな方法を探しています。
すべてがメインスレッドにあります。
Thread t = new Thread(new Runnable {
Looper.prepare();
handler = new Handler();
Looper.Loop();
}
handler.post(new Runnable{}) //at this point sometimes handler is still null.
and it is created like few ms later. But still at this point i need valid handler
to background thread
はあなたのコードをしてください追加することができますが、私はよく非常によくあなたの問題 – FUBUs