Java 在正在上载的对象中保留对AsyncTask的引用

Java 在正在上载的对象中保留对AsyncTask的引用,java,android,android-asynctask,Java,Android,Android Asynctask,我成功地创建了一个多照片上传器。它按计划工作。除非我希望能够取消上传,如果我需要的话 我知道如果需要取消异步任务,我可以调用cancel() 我想做的是在我的照片上传对象中保留对AsyncTask的引用,以便在必要时可以引用它以取消 执行以下操作是可行的,但我无法获得异步任务的引用 UploadItem item = new UploadItem(); item.setItemFilePath(imageLocation); item.setTaskIdentifier(UUID.randomU

我成功地创建了一个多照片上传器。它按计划工作。除非我希望能够取消上传,如果我需要的话

我知道如果需要取消异步任务,我可以调用
cancel()

我想做的是在我的照片上传对象中保留对AsyncTask的引用,以便在必要时可以引用它以取消

执行以下操作是可行的,但我无法获得异步任务的引用

UploadItem item = new UploadItem();
item.setItemFilePath(imageLocation);
item.setTaskIdentifier(UUID.randomUUID().toString());

new UploadTask().execute(item);
但是如果我需要取消它,我想保留对该任务的引用。所以我做了一些类似的事情,但它使应用程序崩溃

//Create new upload item
UploadItem item = new UploadItem();
item.setItemFilePath(imageLocation);
item.setTaskIdentifier(UUID.randomUUID().toString());
item.setAsyncTask(new UploadTask());

//Start the upload
item.getAsyncTask().execute(this);
如何在自定义对象中保留对异步任务的引用?


我的自定义上载对象。

public class UploadItem implements Serializable {


    public AsyncTask mAsyncTask;
    public String itemFilePath = "";
    public String taskIdentifier = "";
    public boolean isUploading = false;


    public AsyncTask getAsyncTask() {
        Log.d("Upload Item", "Getting upload task");
        return mAsyncTask;
    }

    public void setAsyncTask(AsyncTask asyncTask) {
        Log.d("Upload Item", "Setting upload task");
        this.mAsyncTask = asyncTask;
    }

    public String getItemFilePath() {
        return itemFilePath;
    }

    public void setItemFilePath(String itemFilePath) {
        this.itemFilePath = itemFilePath;
    }


    public boolean isUploading() {
        return isUploading;
    }

    public void setUploading(boolean uploading) {
        isUploading = uploading;
    }


    public String getTaskIdentifier() {
        return taskIdentifier;
    }

    public void setTaskIdentifier(String taskIdentifier) {
        this.taskIdentifier = taskIdentifier;
    }
}
后台任务:

  public class UploadTask extends AsyncTask<UploadItem, Integer, HashMap<String, String>> {

        @Override
        protected void onPreExecute() {  }

        @Override
        protected void onProgressUpdate(Integer... values) { }

        @Override
        protected void onPostExecute(HashMap<String, String> r) { }

    }
公共类UploadTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护的void onProgressUpdate(整型…值){}
@凌驾
受保护的void onPostExecute(HashMap r){}
}

堆栈跟踪是什么?