我有这段代码可以在后台进行异步调用,显示进度条并在单击按钮时启动另一个活动:@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 中显示第一个活动时立即启动异步调用,以便用户单击按钮时看起来更快。因此,异步调用在活动创建后立即开始,然后当用户单击按钮时,如果结果已经可用,则下一个活动启动,否则显示进度条,直到结果可用,一旦结果准备好第二个活动开始。最好的方法是什么?
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
onCreate:启动任务
AsyncTask:当任务完成时,检查用户是否已经单击了按钮。如果是,则开始下一个活动。如果没有,则存储任务的结果,或者如果不需要结果,则仅存储一个标志。
onClick:检查任务是否完成。如果是,则开始下一个活动。如果没有,则显示进度指示器,并设置一个标志来指示用户已单击该按钮。
添加回答
举报
0/150
提交
取消