gpt4 book ai didi

java - android-java 如何取消异步任务

转载 作者:行者123 更新时间:2023-12-02 04:33:43 25 4
gpt4 key购买 nike

我有一个执行 HttpPost 请求的 AsyncTask,我有一个字段供人们输入电子邮件,并且还有一个检查电子邮件是否正确的方法。我想做的是,如果电子邮件验证结果为假,则取消我的 AsyncTask。我已经尝试了几种方法,但没有任何效果,这是我的代码..

//check if email is valid
public boolean isEmailValid(String email) {
boolean isValid = false;

String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;

Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
return true;
}
return false;
}

// AsyncTask

private class DownloadFilesTask extends AsyncTask<String,String,String> {
String email;

@Override
protected void onPreExecute() {
super.onPreExecute();
Email= (EditText)findViewById(R.id.email);
email= Email.getText().toString().trim();

if(isEmailValid(email)== false){
Toast.makeText(Registration.this,"Not a valid Email",Toast.LENGTH_LONG).show();
// I would like to cancel Async here and return but this is a type Void
}
}

@Override
protected String doInBackground(String... params) {
// HttpPost stuff here I return a type String
}

// @Override
protected void onPostExecute(String file_uri) {
// post stuff
}
}

我的 onPreExecute() 类型为 void,我尝试将其更改为 Boolean 类型,但在不兼容的类型上出现不匹配。我的 doinBackground 必须具有 String 类型,因为我要向 onPostExecute 返回一些内容。我只是想中止 AsyncTask 如果电子邮件返回 false 有什么建议吗?

最佳答案

IMO,您应该在运行 asyncTask 之前检查它,但如果您想要按照自己的方式进行 - 您可以将某些全局变量设置为 false 并返回它,然后在 doInBackground 方法中检查此变量并将其返回到 onPostExecute

多种可能性之一:

private class DownloadFilesTask extends AsyncTask<String,String,String> {
String email;
boolean emailValid = true;

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

Email= (EditText)findViewById(R.id.email);
email= Email.getText().toString().trim();


if(!isEmailValid(email)) {
Toast.makeText(Registration.this,"Not a valid Email",Toast.LENGTH_LONG).show();
emailValid = false;

return;
}
}

@Override
protected String doInBackground(String... params) {
if(emailValid) {
// now you know it isn't valid
return "invalid";
}
}

// @Override
protected void onPostExecute(String file_uri) {
if(file_uri.equals("invalid") {
// now you know it isn't valid event here
}
}
}

关于java - android-java 如何取消异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102187/

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