У меня есть приложение для Android с двумя действиями, определенными ниже.
У вас есть только одно занятие.
В MainMenu.oncreate () у меня запущен AlarmManager, чтобы периодически запрашивать данные на сервере и обновлять текст кнопки в пользовательском интерфейсе PlayBack.
Почему? Намереваетесь ли вы, чтобы эти тревоги продолжались даже после того, как пользователь вышел из активности?
Могу ли я получить доступ к объекту «Воспроизведение» через глобальную ссылку или мне нужно вместо этого запустить AlarmManager в Playback.oncreate (), чтобы я мог передать ссылку на него?
Ни.
Использование AlarmManager
означает, что вы хотите, чтобы периодическая работа продолжалась даже после того, как пользователь выходит из операции. Следовательно, очень вероятно, что «объект воспроизведения» отсутствует, поскольку пользователь, вероятно, не участвует в вашей деятельности. Ваша служба может отправить собственную трансляцию Intent
, которую нужно забрать, если активность Playback
все еще существует. Этот пример проекта демонстрирует использование для этого упорядоченной трансляции, поэтому, если активность отсутствует, вместо нее поднимается Notification
.
Если, с другой стороны, вы не хотите, чтобы периодическая работа продолжалась, если пользователь выходит из действия, не используйте AlarmManager
. Используйте postDelayed()
в упражнении, используя Runnable
, который запускает ваш сервис с помощью startService()
, затем перепланирует себя с помощью postDelayed()
. В этом случае вы можете рассмотреть возможность использования чего-то вроде Messenger
, чтобы сервис сообщал активности о том, что происходит, если она все еще существует. Этот пример проекта демонстрирует использование Messenger
таким образом.