「Android/handler」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→マルチスレッドで実行中にUIスレッドに戻して実行する方法) |
(→遅延処理させてUIスレッドで返す) |
||
行20: | 行20: | ||
==遅延処理させてUIスレッドで返す== | ==遅延処理させてUIスレッドで返す== | ||
+ | <pre> | ||
final Handler handler = new Handler(); | final Handler handler = new Handler(); | ||
handler.postDelayed(new Runnable() { | handler.postDelayed(new Runnable() { | ||
行29: | 行30: | ||
} | } | ||
}); | }); | ||
− | |||
} | } | ||
}, 1000L); // 1000ms後に処理 | }, 1000L); // 1000ms後に処理 |
2019年9月11日 (水) 19:26時点における最新版
目次
handlerの基本的な使い方(UIスレッド(メインスレッド)で実行)
Handler handler = new Handler(); handler.post(new Runnable() { @Override public void run() { Log.i("test", "run()"); } });
マルチスレッドで実行中にUIスレッドに戻して実行する方法
public void run() { Handler handler = new Handler(); handler.post(new Runnable() { @Override public void run() { Log.i("test", "run()"); } }); }
遅延処理させてUIスレッドで返す
final Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { handler.post(new Runnable() { @Override public void run() { mLog.debug(TAG, "1000ms後遅延"); } }); } }, 1000L); // 1000ms後に処理
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); } }
5秒後に実行する方法
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { @Override public void run() { // 5秒後処理 } }, 5000);
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()"); } });
関連
Android/マルチスレッド [ショートカット]