2013年4月18日木曜日

[AndroidSDK]Thread時のUI更新

・AndroidアプリはUI更新は1タスクで回っている
・ThreadからUI更新をしても、更新先が無い
・Handlerで割り込みをして、UI更新のタスクに委任する

public class SampleActivity extends Activity {
 private static Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
  mHandler = new Handler(); //Handlerを作成
  
  //Threadを開始
  new Thread(new Runnable() {
                public void run() {
                
                if (true) { 
                 TextView textView = (TextView) findViewById(R.id.TextView);
                 textView.setText("Handlerを使わないとここで落ちる");
                }
                
    mHandler.post(new Runnable() {
     public void run() {
      TextView textView = (TextView) findViewById(R.id.TextView);
                  textView.setText("Handlerを使って更新するので落ちるない");
     }
    });
   }
  }).start();
 }
}

参考サイト
TechBooster
http://techbooster.org/android/application/6191/

throw Life
http://www.adamrocker.com/blog/261/