2012-06-18 2 views
0

В настоящее время у меня есть 2 разных вида деятельности, которые мне нужны для совместной работы.Управление потоками/управление потоками Android

мне нужно Activity #1 сделать некоторые работы первого, а затем вызвать Activity#2 и подождать, пока он не закончит, а затем сделать несколько различных рабочих мест, затем пауза и вызвать Activity#2 снова, ... и т.д.

Edit: Я не» знаю, что у меня на уме, но я пропустил эту часть из: мне нужно обновить ЗАДАНИЕ 1 в UI всякий раз, когда я получаю некоторые результаты деятельности 2, так что я решил поставить большую часть кода внутри AsyncTask:

//class Activity#1: 
    onCreate(){ 
    // creates UpdateUITask (the AsyncTask), pass its Context as parameter 
    } 
    onActivityResult() 
    { 
    // do something with result 
    } 

// the AsyncTask 
class UpdateUITask implements AsyncTask{ 
    doInBackground(){ 
    // uses the passed context to call startActivityForResult(Activity#2) 
    // this is done multiple times *** 
    } 
    publishProgress() 
    { 
    // update the UI of Activity #1 
    } 
} 

Моя проблема в том, что я обозначил * выше на самом деле не приостанавливается startActivityForResult, а всего лишь Activity # 1. Таким образом AsyncTask создает несколько экземпляров Activity # 2, которые в моем случае нежелательны. Есть ли способ преодолеть эту проблему?

Извините за предыдущие неудобства.

+1

Термин 'активность' в android представляет собой экран. Не уверен, что вы используете термин «активность» для отображения экрана или действия протектора. Просьба уточнить. –

+0

Это обычные действия экрана, хотя я запустил их автоматически, и они должны обрабатывать некоторую информацию, необходимую мне для другой деятельности. –

ответ

0

Старт activity#2 от activity#1 используя startActivityForResult(). Как только activity#2 будет выполнен с помощью операций, вы можете закончить эту деятельность. По окончании будет вызываться activity#2onActivityResult(), описанный в activity#1, и вы можете выполнить оставшиеся операции.

Проверьте следующую ссылку для получения дополнительной информации: http://developer.android.com/reference/android/app/Activity.html#StartingActivities

EDIT

Метод doInBackground() работает в потоке без пользовательского интерфейса. Вы ошибаетесь, позвонив по этому методу startActivityForResult(Activity#2). Если у вас есть какой-либо процесс, который не требует вмешательства пользователя, вам не нужно вызывать какую-либо деятельность. Просто напишите, что не-пользовательский интерфейс в doInBackground() и publishProgress() в Activity #1

+0

Извините, я не понимал, что до сих пор я пропустил что-то важное, я снова отредактирую вопрос. –

Смежные вопросы