Android開発をしているうちにつまづくのはThreadとHandlerであろう。
基本とAndroidにおける扱いをまとめる。
Thread
基本的にコードに書いた一連の処理は、1つのThread内で一本の流れとして逐次的に処理される。並列的に処理をしたい場合や、時間の掛かる処理を行いたい場合などは別のThreadを立てて実行する。
Androidでは、ネットワークアクセス等、時間の掛かる処理はActivity等を実行しているUIThreadでは許可されていないことに注意する。
Threadは2通りの方法でつくることができる。
new Threadする
classをimplements Runnableする
いずれの場合も、上の★の中でrun()をOverrideして、実行する処理を記載する。
また、Threadを実行には、Threadのstart()メソッドを呼び出す。
Handler
HandlerはThread間の通信を可能にする。postメソッドを用いて、Handlerのインスタンスを作成したThreadに対してアクセスする。また、Handlerの引数にLooperを用いて、任意のスレッドにアクセスする使い方もできる。
Androidでは、UIThread以外からUI部品にアクセスすることができない。そこで、別ThreadからUIThreadに対してHandlerを用いてアクセスする。
Handler guiThreadHandler = new Handler(); new Thread = new Thread( new Runnable(){ guiThreadHandler.post(new Runnable(){ @Override public void run(){ //処理 } } }).start();