非常游戏网
android implements?????????????????????

android implements?????????????????????

2024-12-06编程问答66448

???Android?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????UI?????????????????????Android????????????????????????????????????

  1. ??????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();
  1. ??????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();
  1. ??????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();
  1. ??????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???????????????????????????????????????????????????????????????????????????????????????