В моем приложении для Android используется класс Application
(а именно его подкласс Application
), чтобы запустить поток для извлечения данных с веб-сайта. Как только он делает это успешно, он должен предоставить эти данные текущему Activity
(в моем приложении есть 2 действия). Как я могу сообщить об этом Activity
? Как я могу сообщить текущему Activity
, что есть новые доступные данные, которые необходимо получить и представить? Спасибо за ваши ответы.Сделать приложение связи с текущей деятельностью
ответ
Что касается использования широковещательной системы.
Вы можете получить контекст в классе Application с помощью getApplicationContext();
Затем вы можете отправить свой собственный эфир:
Intent i = new Intent();
i.setAction("your.package.customintent.TEST");
context.sendBroadcast(i);
Затем вы можете реализовать широковещательный приемник в вашей деятельности, чтобы получить передачу. Дополнительная информация здесь: http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/
Вы можете установить данные, которые вы хотите отправить в намерении, с помощью putExtra.
Но вы также можете сохранить его в базе данных и с помощью трансляций, которые вы даете активности, чтобы были доступны новые данные.
Если вы храните эти данные в поставщике контента (это значит, что при условии, что данные не такие маленькие), вы можете зарегистрировать наблюдателя контента у поставщика контента. Управлением должно управляться действие. Look here
Я только что прочитал, что «вам не нужно развивать собственного провайдера, если вы этого не сделаете намерены поделиться вашими данными с другими приложениями »из документации Google по поставщикам контента. Если мне не нужно делиться моими данными с другим приложением, имеет ли sqlLite нечто сопоставимое с наблюдателем контента? – user3331142
Также объект приложения будет последним, который будет уничтожен в любом приложении. – sgupta
Это очень плохая практика, так как вы никогда не знаете, когда объект приложения будет уничтожен. Вместо этого я рекомендую использовать службу. Читайте в нем разработчики Android!
Почему услуга? Разве не было бы немного излишним использовать услугу, если вам нужно всего лишь получить данные, пока пользователь использует приложение? – user3331142
Из их описания это звучит как локальная передача приложений будет более уместной: Intent i = новый Intent (TEST_ACTION); LocalBroadcastManager.getInstance (контекст) .sendBroadcast (i); – JDJ