Как уведомить неактивные действия? - PullRequest
1 голос
/ 10 марта 2011

В моей программе несколько активностей.Когда одно действие находится на переднем плане, пользователь может что-то делать там, а другие неактивные (то есть, остановленные и приостановленные) действия должны быть проинформированы, чтобы, когда они onResume (), они могли действовать соответственно.

Мой вопрос: как перечисляется активность переднего плана, если и какая неактивная деятельность существует?И как это информирует их?

Я смотрел на Intent и Broadcast, они, кажется, не правильный ответ.Я пытался опубликовать событие в очереди обработчиков неактивных активистов, но, поскольку я не знаю, как их перечислить, я также не могу получить доступ к их обработчикам.

Справка!Спасибо!

(Я не могу просто установить глобальный флаг. Потому что, когда первое неактивное действие становится действием, оно видит его, оно очищает его. Тогда остальная часть IA не будет знать. Я могуЯ не ставлю контр-флаг, чтобы все приходили и убавляли один, потому что я не знаю, есть ли и сколько ИА. Мне кажется, что единственный способ - это узнать, кто там, и уведомить их одного за другим..)

Ответы [ 3 ]

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

Мой вопрос: как перечисляется активность на переднем плане, если и какая неактивная деятельность существует?И как это информирует их?

Вы этого не делаете и не делаете.

Подумайте о веб-приложении с несколькими веб-страницами.«Веб-страница переднего плана» не будет «перечислять, существуют ли и какие неактивные веб-страницы», не говоря уже о «информировании их».С точки зрения видимой в данный момент веб-страницы, это единственное, что есть вокруг.Тот факт, что браузер, возможно, имеет другие веб-страницы в своей истории, не имеет значения.

То же самое относится и к действиям Android.Одно действие не должно ни знать, ни заботиться о том, есть ли в ОЗУ 0, 1, 2 или 1337 других действий из этого приложения (хотя, скорее всего, оно будет значительно ниже 1337).Скорее, должна быть согласованная центральная модель данных (например, база данных), и каждое действие работает против центральной модели данных.

ОК, поэтому это означает, что Android не поддерживает или не поощряетактивность проинформирует другую неактивную деятельность?

Исправить.

Так что активисты должны опрашивать, чтобы получить информацию?

Не больше или меньше, чем веб-страницы должны опрашивать, чтобы получить информацию.Это немного зависит от вашего определения «опрос».

1 голос
/ 10 марта 2011

Вы можете рассмотреть возможность использования поставщика контента и вызова ContentResolver.notifyChange (), чтобы заинтересованные действия знали, что что-то изменилось.

1 голос
/ 10 марта 2011

Сначала я сомневаюсь, что вы думаете правильно.Задание должно запрашивать информацию о запуске и не должно быть «информировано» другим занятием (я не говорю о startActivityForResult()).

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

Я не могу просто установить глобальный флаг.Потому что, когда первое неактивное действие становится действием, оно видит его, оно очищает его.

Почему когда-либо действие должно сбрасывать флаг?Флаг очищается только тогда, когда вы говорите, чтобы очистить его.Так что вам решать остановить действие по очистке вашего флага.

...