0
我想要一個更通用和更簡單的方法在後臺啓動方法。所以Command pattern看起來很不錯。使用命令模式的Android:AsyncTask ...我如何發佈進度?
@Full stack ex描述了在his post with AsyncTask中的命令模式的實現。
問題是:我如何在我的方法中發佈進度,在後臺執行,通過正常的AsyncTask Progressdialog或回調?
通常我們使用publishProgress(progress)...但這是不可能的。 publishProgress的範圍是'protected'。直接調用onProgressUpdate()更新對話框當然是不可能的,跨越了後臺進程和UI進程的界限。
如何使用這種或類似的方法和發佈的進展(通過
private static interface Command {
public void execute();
}
public static final class MyWsCommand1 implements Command {
@Override
public void execute() {
// ------- TODO YOUR CODE ---------
publishProgress(90); // similar to this
}
}
private static class GenericAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
private Command command;
public GenericAsyncTask(Command command) {
super();
this.command = command;
}
@Override
protected Result doInBackground(Params... params) {
command.execute();
return null;
}
}
private GenericAsyncTask<Object, Object, Object> myAsyncTask1;
myAsyncTask1 = new GenericAsyncTask<Object, Object, Object>(new MyWsCommand1());
myAsyncTask1.execute();
* publishProgress的範圍是'protected'*你可以從兒童班叫它 –
謝謝。 我交換了擴展AsyncTask的GenericAsyncTask的Command模式。你能把你的評論放在答案中嗎?然後我會+1和V. – tjm1706