facebook twitter hatena line email

「Android/handler」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==handlerの基本的な使い方== Handler handler = new Handler(); handler.post(new Runnable() { @Override public void run() { Log.i("test", "run()...」)
 
行1: 行1:
==handlerの基本的な使い方==
+
==handlerの基本的な使い方(UIスレッドで実行)==
 
  Handler handler = new Handler();
 
  Handler handler = new Handler();
 
  handler.post(new Runnable() {
 
  handler.post(new Runnable() {
行27: 行27:
 
     }
 
     }
 
  }
 
  }
 +
 +
==handlerをUIスレッドでなくワーカースレッドで実行==
 +
HandlerThread handlerThread = new HandlerThread("custom_name1");
 +
handlerThread.start();
 +
Handler handler = new Handler(handlerThread.getLooper());
 +
handler.post(new Runnable() {
 +
    @Override
 +
    public void run() {
 +
        Log.i("test", "run()");
 +
    }
 +
});

2016年11月25日 (金) 17:03時点における版

handlerの基本的な使い方(UIスレッドで実行)

Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        Log.i("test", "run()");
    }
});

5秒ごとに定期的に実行する方法

public class MainActivity extends AppCompatActivity {
    Handler mHandler = new Handler();
    private Runnable mHandlerTask = new Runnable() {
        @Override
        public void run() {
            Log.i("test", "run()");
            // 5秒後に実行
            mHandler.postDelayed(mHandlerTask, 5000L);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初回呼び出し
        mHandler.post(mHandlerTask);
    }
}

handlerをUIスレッドでなくワーカースレッドで実行

HandlerThread handlerThread = new HandlerThread("custom_name1");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
handler.post(new Runnable() {
    @Override
    public void run() {
        Log.i("test", "run()");
    }
});