如何中途停止异步任务

时间:2018-06-14 10:30:00

标签: java android android-asynctask

我有一个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时切换,否则打破。什么是最好的 - 让它继续或中途取消任务?

2 个答案:

答案 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);
}