Pages - Menu

2016-08-27

[Android] ThreadとHandler

Android開発をしているうちにつまづくのはThreadとHandlerであろう。
基本とAndroidにおける扱いをまとめる。

Thread

基本的にコードに書いた一連の処理は、1つのThread内で一本の流れとして逐次的に処理される。並列的に処理をしたい場合や、時間の掛かる処理を行いたい場合などは別のThreadを立てて実行する。

Androidでは、ネットワークアクセス等、時間の掛かる処理はActivity等を実行しているUIThreadでは許可されていないことに注意する。

Threadは2通りの方法でつくることができる。

new Threadする

Thread thread = new Thread(new Runnable( /* ★ */ ){});

classをimplements Runnableする

class hoge implements Runnbale { /* ★ */}

いずれの場合も、上の★の中で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(); 

参考

0 件のコメント:

コメントを投稿