Toastを自分で作ったThreadから表示させようと思ったらエラーになった。
{まあ、UI Threadじゃないしな}
と思い、ググってみると、そういうわけでもなくLooperなるオブジェクトがあればいいらしい、その辺りの素晴らしい解説が、下のページ
【Android】 UIスレッドとは別スレッドからのToastの表示
にあって通常そこで終了なのだけど、Looperを取得するために作るHandlerThreadをstart()させた後、quit()するうまいタイミングがないなあと思っていた。
ところが、ApplicationクラスにgetMainLooper()なんてのを見つけたので、使ってみたらうまくいったのでメモ。
Applicationを取得するのには、Activity.getApplication()があるが、今回は違うクラスから別スレッドで動かしたかったので、以下のようにした。
public class MyApplication extends Application {
static private MyApplication _app;
@Override
public void onCreate() {
super.onCreate();
_app = this;
}
static public MyApplication getApplication() {
return _app;
}
}
これを使って、好きなスレッドから、下の関数を呼んで表示成功。


0 件のコメント :
コメントを投稿