???Android?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????UI?????????????????????Android????????????????????????????????????
- ??????
AsyncTask???AsyncTask?????????????????????????????????????????????????????????????????????????????????????????????????????????UI???????????????????????????????????????????????????
class MyAsyncTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
// ??????????????????????????????????????????????????????????????????
return "????????????";
}
@Override
protected void onPostExecute(String result) {
// ???????????????UI?????????????????????Toast
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
}
?????????AsyncTask????????????????????????????????????execute()?????????
new MyAsyncTask().execute();
- ??????
Thread???Handler??????????????????????????????Thread????????????????????????????????????Handler????????????????????????????????????UI???
class MyThread extends Thread {
@Override
public void run() {
// ??????????????????????????????????????????????????????????????????
final String result = "????????????";
// ???????????????????????????
Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(new Runnable() {
@Override
public void run() {
// ???????????????UI?????????????????????Toast
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
});
}
}
?????????Thread???Handler????????????????????????????????????start()?????????
new MyThread().start();
- ??????
Executors???Future???Executors??????????????????????????????????????????????????????Future?????????????????????????????????????????????Executors?????????????????????????????????Future???????????????
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<String> future = executorService.submit(() -> {
// ??????????????????????????????????????????????????????????????????
return "????????????";
});
// ????????????
try {
String result = future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// ???????????????
executorService.shutdown();
- ??????
LiveData???ViewModel???LiveData??????????????????????????????????????????????????????????????????UI???ViewModel?????????????????????UI????????????????????????????????????????????????????????????????????????????????????????????????LiveData???ViewModel????????????????????????????????????????????????????????????
?????????????????????ViewModel??????
class MyViewModel extends ViewModel {
private MutableLiveData<String> result = new MutableLiveData<>();
public LiveData<String> getResult() {
return result;
}
public void setResult(String result) {
this.result.setValue(result);
}
}
????????????Activity???Fragment?????????LiveData???ViewModel???
public class MyActivity extends AppCompatActivity {
private MyViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewModel = new ViewModelProvider(this).get(MyViewModel.class);
// ??????????????????????????????
new Thread(() -> {
// ??????????????????????????????????????????????????????????????????
final String result = "????????????";
// ???????????????????????????
runOnUiThread(() -> viewModel.setResult(result));
}).start();
// ??????LiveData?????????UI
viewModel.getResult().observe(this, new Observer<String>() {
@Override
public void onChanged(String result) {
// ???????????????UI?????????????????????Toast
Toast.makeText(MyActivity.this, result, Toast.LENGTH_SHORT).show();
}
});
}
}
????????????Android???????????????????????????????????????????????????????????????????????????????????????