タグ「ANR」 の検索結果(1/1)

2011年2月 7日

AsyncTaskと仲良くなろう:バックグラウンド処理とキャンセル

○お題:とあるURLにXMLがあって、XMLの中に画像のURLがあるのでダウンロードして表示するサンプル

  • ・とあるURLにXMLがあります。
  • ・XML内に画像のURLがあります。
  • ・その画像をダウンロードして表示します。
  • ・ダウンロードの開始にはボタンをタップします。
  • ・ダウンロード中は進行状況を示すダイアログが表示されます。
  • ・BACKキーで中断できます。

「別スレッド処理:new Thread(new Runnable).start()」とか、「別スレッドからのUI操作:Handler.post(new Runnable)」とか「バックグラウンド処理+UI更新AsyncTask実装例」まではそこそこサンプルが見つかるのですが、「中断処理」まで実例が載ってるサンプルがなかなか見つからないので、一から起こしてみることにしました。

async_task_01.png async_task_02.png

downloadボタンを押すと、「ボタンの無効化」「ダイアログの表示」を実行、別スレッドでCookpadから肉じゃが画像をダウンロードします。途中BACKキーでキャンセルが可能です。ダイアログ消去をトリガにスレッドを止めてます。

async_task_03.png async_task_04.png

無事ダウンロードが終わった際にはダイアログを消去して、肉じゃが画像を表示します。

以下、関連するANRとUI Threadの話に続いて、AsyncTaskの簡単な説明とソースをば。

【2014.02.12追記】本エントリ中の話がそこそこ古く、ソースコードも正常に動作しないことから、DialogFragmentベースで書き換えた続編のエントリ「AsyncTaskと仲良くする必要はないのかもしれない」を作成しました。初心者向けではないエントリになってしまっておりますが、よろしければこちらも参照ください。

続きを読む "AsyncTaskと仲良くなろう:バックグラウンド処理とキャンセル"