gpt4 book ai didi

java - android asynctask取消不工作

转载 作者:行者123 更新时间:2023-11-30 03:16:26 27 4
gpt4 key购买 nike

我正在尝试在我的应用中创建登录。

这是我的登录 Activity ,我在其中创建了一个 Asynktask,如果 getUser() 的结果为 null,我希望在其中取消。

public class Login extends AsyncTask<String, Void, Void> {

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Void doInBackground(String... params) {
ArrayList<String> userValues = new ArrayList<String>();

userValues.add(((EditText)findViewById(R.id.usermail)).getText().toString());

userValues.add("john");

if((response = new Database().getUser(userValues)) == "null") {
cancel(true);
}

return null;
}

@Override
protected void onCancelled() {
Toast.makeText(getApplicationContext(), "Not registered", Toast.LENGTH_SHORT).show();
}

@Override
protected void onPostExecute(Void result) {
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
super.onPostExecute(result);
}
}
}

如果 Database.getUser() 的返回值返回“null”,我希望取消“登录”过程。但它似乎不起作用,我不知道是我做错了什么还是忘记了什么。

非常感谢您。

最佳答案

cancel(allowInterrupt)

Calling this method will result in onCancelled(Object) being invoked on the UI thread after doInBackground(Object[]) returns. Calling this method guarantees that onPostExecute(Object) is never invoked.

也就是说,使用可以使用以下方法:

public class Login extends AsyncTask<String, Boolean, Boolean> {

@Override
protected Boolean doInBackground(String... params) {
if (getUser() == null){
// exit from this doInBackground and proceed to postExecute
return false;
}

// continue

return true;
}

@Override
protected void onPostExecute(Boolean result) {
if (result){
// succes
}else {
// cancelled
}
}
}

关于java - android asynctask取消不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018651/

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