【Android】子线程切回主线程的方法梳理
view.post(Runnable action)
textView.post(() -> {
textView.setText("更新textView");
});
activity.runOnUiThread(Runnable action)
MainActivity.this.runOnUiThread(() -> {
showIllegalClassDialog(illegalList);
});
Handler机制
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(() -> {
doSomething();
});
AsyncTask
AsyncTask<String, Void, String> asyncTask = new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... strings) {
return "1";
}
@Override
protected void onPostExecute(String s) {
textview.setText(s);
}
};
asyncTask.execute("1", "2", "3");
RxJava等线程切换库
Observable.just("")
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(s -> {
textView.setText(s);
});