как я могу отправить данные из onPostExecute в AsyncTask?

моя проблема такая же, как и эта переменная экземпляра Activity, которая не устанавливается в onPostExecute AsyncTask или как возвращать данные из AsyncTask в основной stream пользовательского интерфейса, но я хочу отправить данные обратно на одну и ту же активность вызова. Не запускает ActiveActivity для намерений, всегда перезапускает активность

В опции можно использовать прослушиватели, где вы создаете интерфейс, который использует ваша деятельность, например:

public interface AsyncListener { public void doStuff( MyObject obj ); } 

Таким образом, если вы подclassифицируете AsyncTask, легко добавить этого слушателя, а затем в onPostExecute () вы можете сделать что-то вроде:

 protected void onPostExecute( MyObject obj ) { asyncListener.doStuff(obj); } 

Это зависит от структуры вашего classа, но если ваш AsyncTask является classом в вашей деятельности, вы можете ссылаться на методы этой деятельности. Что бы вы сделали, так это в методе 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 results) { dismissDialog(DIALOG_LOADING); //do stuff with the results here.. } private class LongRunningTask extends AsyncTask> { @Override protected void onPreExecute() { //do pre execute stuff } @Override protected List doInBackground(Long... params) { List myData = new ArrayList(); 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 result) { YourActivity.this.onBackgroundTaskDataObtained(result); } } } 

Таким образом, типичный stream похож на этот, задайте представление текущей страницы, а затем покажите диалог прогресса. Сразу после этого запускается асинхронная задача (или всякий раз, когда это не имеет значения).

После завершения асинхронной задачи вызовите функцию активности и передайте ей данные. Не используйте общие данные в задаче async или вы рискуете проблем с streamовой обработкой. Вместо этого, как только вы закончите с этим, передайте ее активности. Если вы хотите постоянно обновлять представление при выполнении работы, вы можете использовать onProgressUpdate

  • Google In-App billing, IllegalArgumentException: намерение службы должно быть явным, после перехода на Android L Dev Preview
  • Что такое намерение в Android?
  • Пользовательская фильтрация выбора намерений на основе установленного имени пакета Android
  • Не удалось запустить служебный
  • как подключить несколько файлов к почтовому клиенту в android
  • Приложение Gmail 5.0 не работает с «Разрешением, запрещенным для вложения», когда оно получает намерение ACTION_SEND
  • Открыть приложение галереи с Android Intent
  • Использование намерений для передачи данных между действиями
  • Простой пример для Intent и Bundle
  • Как использовать putExtra () и getExtra () для строковых данных
  • Как использовать намерение для выбора файлового браузера для выбора файла
  • Interesting Posts

    Android: В чем разница между приложением: srcCompat = “” и android: src = “”?

    Лучший с открытым исходным кодом Mixed Integer Optimization Solver

    Bootstrap 3 Свернуть

    std :: vector versus std :: array в C ++

    Windows 7 ищет файл со специальным символом в имени файла?

    Есть ли комбинация клавиш для включения / выключения JavaScript в Firefox?

    Перегрузка функций по типу возврата?

    Рисование объекта с использованием getGraphics () без расширения JFrame

    Что эквивалентно корню в Windows 8.1 и как я могу открыть оболочку в этом контексте?

    Почему скорость моего курсора замедляется, когда моя система находится под интенсивным использованием сети?

    Имя динамической таблицы в linq

    Как заставить мои клавиши Super (Windows Key) вести себя так же, как Ctrl / Alt / Shift в Linux

    jqGrid: использование beforeProcessing для заполнения блоков выбора filterToolbar

    Сортировка JqGrid с использованием LINQ to MySQL (DbLinq) и Dynamic LINQ – Orderby не работает

    Ошибка утверждения и исключение NSInternalInconsistencyException в NativeScript

    Давайте будем гением компьютера.