我有這段代碼可以在后臺進行異步調用,顯示進度條并在單擊按鈕時啟動另一個活動:@Overrideprotected void onCreate(Bundle savedInstanceState) { // .... actionButton.setOnClickListener(this); // call action here}@Overridepublic void onClick(View v) { if (v.getId() == R.id.actionButton) { setProgressVisibility(VISIBLE); new MyActivity.ActionTask().execute(action); }}private void getAction(Action action) { try { Call<Action> getAction = api.callAction(model, action); Response<Action> response = getAction.execute(); setProgressVisibility(INVISIBLE); if (response.isSuccessful() && response.body() != null) { startAction(response.body()); } else { runOnUiThread(() -> showToast(R.string.error, this)); logger.error(getResources().getString(R.string.error)); } } catch (IOException e) { runOnUiThread(() -> showToast(e.getMessage(), this)); logger.error(e.getMessage()); setProgressVisibility(INVISIBLE); }}private void startAction(Action action) { Intent intent = new Intent(this, ActionActivity.class); intent.putExtra("action", action); startActivity(intent);}private class ActionTask extends AsyncTask<Action, Void, Action> { @Override protected Action doInBackground(Action... action) { getAction(action[0]); return action[0]; }}我想在 OnCreate 中顯示第一個活動時立即啟動異步調用,以便用戶單擊按鈕時看起來更快。因此,異步調用在活動創(chuàng)建后立即開始,然后當用戶單擊按鈕時,如果結果已經可用,則下一個活動啟動,否則顯示進度條,直到結果可用,一旦結果準備好第二個活動開始。最好的方法是什么?
1 回答

aluckdog
TA貢獻1847條經驗 獲得超7個贊
onCreate:啟動任務
AsyncTask:當任務完成時,檢查用戶是否已經單擊了按鈕。如果是,則開始下一個活動。如果沒有,則存儲任務的結果,或者如果不需要結果,則僅存儲一個標志。
onClick:檢查任務是否完成。如果是,則開始下一個活動。如果沒有,則顯示進度指示器,并設置一個標志來指示用戶已單擊該按鈕。
添加回答
舉報
0/150
提交
取消