簡體   English   中英

在Android中投放AsyncTask

[英]Casting AsyncTask in Android

我的活動中有兩個AsyncTasks ,每個使用不同的參數類型:

private class TaskA extends AsyncTask<Void, byte[], Boolean> { ... }
private class TaskB extends AsyncTask<byte[], byte[], Boolean>

這兩個子類均實現了可從gui線程調用的方法public boolean SendDataToNetwork(final byte[] cmd)

我想在我的活動中引用一個指向TaskATaskB具體取決於將哪些參數故意傳遞給我的活動。

到目前為止,我所做的嘗試是:

private AsyncTask<?, ?, ?> myTask = null;

 switch(mode) {
    case 1: 
        myTask = new TaskA();
        break;
    case 0:
        myTask = new TaskB();
        break;
    }

但是,當我稍后嘗試在代碼中執行myTask

myTask.execute();

這會導致編譯錯誤: Type safety: A generic array of capture#7-of ? is created for a varargs parameter Type safety: A generic array of capture#7-of ? is created for a varargs parameter

如何根據switch-case語句將TaskA正確地myTaskTaskATaskB

更新:

使用以下myTask初始化myTask

private AsyncTask myTask = null;

產生一個警告:

myTask= new TaskA();
myTask.execute();

The method execute(Object...) belongs to the raw type AsyncTask. References to generic type AsyncTask<Params,Progress,Result> should be parameterized

如果我嘗試使用方法SendDataToNetwork現在會出現錯誤:

The method SendDataToNetwork(byte[]) is undefined for the type AsyncTask

看起來對象myTask從未真正轉換為TaskATaskB類型?

如果您希望能夠在兩種任務類型上都調用SendDataToNetwork,則您的AsyncTask子類應該實現一個聲明它的接口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM