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 件のコメント :
コメントを投稿