我有一个Async
任务:
private class UpdateApp extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String result = "";
try{
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(),0);
curVersionCode = packageInfo.versionCode;
} catch (Exception Ignored) {
}
result = check(curVersionCode);
return result;
}
...
@Override
protected void onPostExecute(final String success){
if (success != "a") this.cancel(true); //Here's the confusion
switch (success){
case "z":
new AlertDialog.Builder(mContext).setMessage("0").setCancelable(true).show();
break;
case "a":
new AlertDialog.Builder(mContext).setMessage("1").setCancelable(true).show();
break;
default:new AlertDialog.Builder(mContext).setMessage("default").setCancelable(true).show();
break;
}
}
如果成功!=a
,我想停止Asynctask。如何实现?
可以让它继续并仅在success == a
时切换,否则打破。什么是最好的 - 让它继续或中途取消任务?
答案 0 :(得分:1)
如果onPostExecute()中的代码运行比doInBackground完成()。
所以AsyncTask已经停止了。
不必再取消了。
没有意义。
答案 1 :(得分:0)
可以使用OBJECT_OF_ASYNK_TASK.cancel();
在Android Studio中,此方法的说明是检查以获取更多信息
class Temp extends AsyncTask<Void,Void,Void>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... voids) {
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
private void runTemp(){
Temp temp = new Temp();
temp.execute();
temp.cancel(true);
}