CalledFromWrongThreadExceptionの意味について

2019年5月13日

CalledFromWrongThreadExceptionの意味とは?

Androidアプリの開発で発生するCalledFromWronThreadExceptionは、

メインスレッド(UIスレッド)以外からviewを触ると発生するExceptionを意味しています。

CalledFromWrongThreadException: 

Only the original thread that created a view hierarchy can touch its views

 

Androidは描画処理を行うためのUIスレッドしか持っていないシングルスレッド設計です。

従って、UIスレッド(メインスレッド)以外のスレッドからUIの描画処理を

行うとCalledFromWrongThreadExceptionが発生します。

 

 

CalledFromWrongThreadExceptionの回避方法

  1. 前述のExceptionを回避する為に 別スレッドからHandlerを経由してViewを操作。
//Handler生成
Handler mHandler = new Handler();
public void onClick(View v) {
   
    //スレッド生成
    new Thread(new Runnable() {
        public void run() {
         
            //Handlerにpost
            mHandler.post(new Runnable() {
                public void run() {
                    //Viewを操作する処理を記述
                }
            });
        }
    }).start();
}

まとめ

  • Androidはシングルスレッドの設計で、メインスレッド(UIスレッド)
    以外のスレッドからVIew操作を行えない。
  • メインスレッド以外からView操作を行う場合は、別スレッドからHandlerを
    経由してView操作を行う。