Прослушивание активности в Android - PullRequest
2 голосов
/ 01 марта 2011

как я могу прослушать в действии событие, вызванное другим действием?

В частности, я создал меню с действием для подключения к Facebook и получения друзей пользователя (как только пользователь входит в систему, список друзей автоматически и асинхронно запрашивается, а при событии onComplete заполняет глобальный ArrayList) , Скажем, пользователь покидает меню до того, как запрос будет завершен, и переходит к другому занятию, которое показывает список друзей. Чтобы заполнить список, мне нужно знать, завершен ли запрос getfriends и заполнен ли ArrayList. Если это не так, мне нужно знать, когда это будет сделано, чтобы начать заполнять мой список друзей. Я не уверен, уничтожен ли асинхронный запрос при выходе из действия, и, если нет, как я могу узнать, что он выполнен.

Можно ли этого достичь?

Спасибо

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

ИСП:

Основой для взаимодействия между операциями в Android является Intents , которая, в основном, основана на событиях (а) синхронной связи. Я полагаю, что события, на которые вы ссылаетесь, могут быть чем угодно.

Вероятно, вам следует просто определить приложение Intent и запустить его при выполнении действия с просмотром списка, когда API Facebook завершит свой запрос.

РЕДАКТИРОВАНИЕ:

... и, ладно, вы после чего-то немного другого. Действия могут и будут убиты волей-неволей: это должно привести к зависанию асинхронных запросов (но я не смотрел на API FB, так что я просто догадываюсь). Я думаю, что то, что вы описываете, требует, чтобы запрос Facebook был сделан из Сервиса в вашем приложении. Тогда вы сможете использовать просто Observable / Observer s: объявите FriendObservable (простейшая реализация: глобальный объект или синглтон), в котором может регистрироваться любая активность, отображающая друзей сам. Я думаю, вы должны ограничить время жизни таких FriendService взаимодействий API Facebook, чтобы минимизировать потребление ресурсов.

2 голосов
/ 01 марта 2011

Я надеюсь, что это может помочь вам

intentApplication = new Intent(Applic.this, com.rActivity.class);
startActivityForResult(intentApplication, SCANNER_REQUEST_CODE);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == Activity.RESULT_OK && requestCode == SCANNER_REQUEST_CODE) {
            Bundle extras = data.getExtras();       
            String result = extras.getString("SCAN_RESULT");    
            //Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...