为了账号安全,请及时绑定邮箱和手机立即绑定

仅当结果已可用时启动异步任务并在单击按钮时执行操作,否则等待结果然后执行操作

仅当结果已可用时启动异步任务并在单击按钮时执行操作,否则等待结果然后执行操作

HUH函数 2023-08-23 17:18:16
我有这段代码可以在后台进行异步调用,显示进度条并在单击按钮时启动另一个活动:@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:检查任务是否完成。如果是,则开始下一个活动。如果没有,则显示进度指示器,并设置一个标志来指示用户已单击该按钮。


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信