タグ

programmingとLooperに関するastk_fのブックマーク (2)

  • 【Android】 UIスレッドとは別スレッドからのToastの表示

    2012年 8月 16日(木曜日) 00:00 | 最終更新 2012年 9月 26日(水曜日) 20:23 | 作者: 森 純一 『SQLiteとCursorLoaderの使い方(3/3)』を書いた際に、テスト用に埋め込んだToastがUIスレッド以外のスレッドから呼び出せてしまった。最初はたまたまかと思ったが何度やっても、いろいろと操作していても表示できる。常々、ToastはUIスレッドからしか呼べないと思っていたので、これは非常に不思議でした。 なので、なぜエラーにならずに呼び出せるのか、ちょっと調べてみました。 Toastを表示したスレッドについて まず最初に、今回の現象が起きた別スレッドの処理について調べてみます。 今回の現象は、AsyncQueryHandler という Content Resolver を経由してデータ取得を非同期に行う処理に関連して見つかりました。このAsy

  • throw Life - AndroidのHandlerとは何か?

    AndroidでWeb APIを使う場合、マルチスレッドによるユーザビリティ向上を以前のエントリで説明しました。 AndroidアプリのUIはシングル・スレッド モデルです。 単純にマルチスレッドにしてUIの操作をしてしまうと、CalledFromWrongThreadExceptionでアプリがダウンしてしまいます。 これを回避する仕組みがHandlerです。 Handlerの仕組みを簡単に説明しようと思ったのですが、 またもや長くなってしまったので、先にまとめます。 AndroidUI操作はシングル・スレッド モデル ユーザビリティ向上の為にはマルチスレッドが必要 Handlerで実現 Handlerを使わない場合に起きる例外は実行スレッドのチェックで発生 Handlerを使うと、UI Threadの持つキューにジョブを登録できる キューはUI Threadにより実行される

  • 1