对于我自己,我使用回调函数来执行此操作,我在 onPostExecute 之后调用该函数。
public AsyncUnzip(Activity ctx, Observer callback) {
this.ctx = ctx;
this.callback = callback;
}
和
@Override
protected void onPreExecute() {
super.onPreExecute();
dia = new ProgressDialog(ctx);
dia.setTitle("Bitte warten");
dia.setMessage("Geodatenpaket wird entpackt...");
dia.setCancelable(false);
dia.show();
}
和
@Override
public void onPostExecute( Boolean result ) {
super.onPostExecute(result);
dia.dismiss();
callback.update(null, returnFolder);
System.out.println("Unzipped to: " + returnFolder.getName() );
}
在这种情况下,您对 Async Task 的调用将如下所示:
AsyncUnzip unzipThread = new AsyncUnzip(ImportActivity.this, new Observer() {
@Override
public void update( Observable observable, Object data ) {//your code invoked after Async Task
} });
unzipThread.execute(selectedFile); //Start Unzip in external Thread.
注意:这是一个使用匿名 Observer 实现且没有 observable 的快速而简单的解决方案。