gpt4 book ai didi

android - 未调用我的 AsyncTask 的 onPreExecute/onPostExecute

转载 作者:行者123 更新时间:2023-11-29 14:38:56 26 4
gpt4 key购买 nike

在我的自定义 DialogPreference 中,我使用执行 AsyncTask 的自定义 View.onClickListener 覆盖肯定按钮的 onClick 事件。我的类(class)大致如下所示:

public class LoginDialog extends DialogPreference {
private Context mContext;

public LoginDialog(Context context, AttributeSet attrs) {
super(context, attrs);

mContext = context;
setDialogLayoutResource(R.layout.login_dialog);
}

@Override
protected void showDialog(Bundle bundle) {
super.showDialog(bundle);
Button pos = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE);
pos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
new LoginTask(mContext, LoginDialog.this).doInBackground(user_name, user_password);
}
});
}

public class LoginTask extends AsyncTask<String, Void, Boolean> {
private LoginDialog mDialog;
private Context mContext;

public LoginTask(Context cx, LoginDialog loginDialog) {
super();
mDialog = loginDialog;
mContext = cx;
}

protected void onPreExecute() {
// this is not called, at least nothing shows up in the logs
}

protected Boolean doInBackground(String... params) {
// this is called
}

protected void onPostExecute(Boolean success) {
// this is not called, at least nothing shows up in the logs
}
}
}

为什么没有调用 onPre/PostExecute 方法?我尝试展示 toast 、记录内容,但什么也没有出现。我验证了调用了 doInBackground 方法。

最佳答案

new LoginTask(mContext, LoginDialog.this).doInBackground(user_name, user_password);

你不应该调用 doInBackground。请改为调用 execute()。

ASyncTask这在文档中,并在 Threading Rules

的第 4 行下明确说明

关于android - 未调用我的 AsyncTask 的 onPreExecute/onPostExecute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com