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