Это зависит от структуры вашего класса, но если ваш AsyncTask является классом в вашем Activity, то вы можете ссылаться на методы этого действия.
В вашем методе onPostExecute вызовите функцию из вашего Activity, которая передает некоторые данные, полученные в AsyncTask, в действие, где вы можете затем использовать его.
Код будет выглядеть так
class YourActivity extends Activity {
private static final int DIALOG_LOADING = 1;
public void onCreate(Bundle savedState) {
setContentView(R.layout.yourlayout);
showDialog(DIALOG_LOADING);
new LongRunningTask1().execute(1,2,3);
}
protected Dialog onCreateDialog(int dialogId) {
switch(dialogId) {
case DIALOG_LOADING:
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setTitle("Loading Data");
pDialog.setMessage("Loading Data, please wait...");
return pDialog;
default:
return super.onCreateDialog(dialogId);
}
}
private void onBackgroundTaskDataObtained(List<String> results) {
dismissDialog(DIALOG_LOADING);
//do stuff with the results here..
}
private class LongRunningTask extends AsyncTask<Long, Integer, List<String>> {
@Override
protected void onPreExecute() {
//do pre execute stuff
}
@Override
protected List<String> doInBackground(Long... params) {
List<String> myData = new ArrayList<String>();
for (int i = 0; i < params.length; i++) {
try {
Thread.sleep(params[i] * 1000);
myData.add("Some Data" + i);
} catch(InterruptedException ex) {
}
}
return myData;
}
@Override
protected void onPostExecute(List<String> result) {
YourActivity.this.onBackgroundTaskDataObtained(result);
}
}
}
Таким образом, типичный процесс выглядит следующим образом: установите вид текущей страницы, а затем отобразите диалоговое окно прогресса. Сразу после этого запустите асинхронную задачу (или когда-нибудь, это на самом деле не имеет значения).
После выполнения асинхронной задачи вызовите функцию действия и передайте ей данные.
Не используйте общие данные в асинхронной задаче, иначе вы рискуете столкнуться с поточностью. Вместо этого, как только вы закончите с этим, передайте их действию. Если вы хотите постепенно обновлять представление во время работы, вы можете использовать на onProgressUpdate