Я хочу реализовать функцию в своем приложении Android, которая позволит пользователю получать уведомления, когда его страна поддерживается в моем приложении, и у меня есть некоторые сомнения относительно того, как реализовать эту функцию.
Обычно «поддерживается в моем приложении» подразумевает обновление этого приложения.
Страна пользователя всегда на первом месте, и если она не поддерживается, есть кнопка, по которой он может щелкнуть и запросить информацию о том, когда его страна получит поддержку.
Сохранить страну в SharedPreferences
. При первом запуске после каждого обновления приложения посмотрите, есть ли страна в списке поддерживаемых, и откройте «эй! Теперь это поддерживается!» Диалог. Или, в крайнем случае, зарегистрируйтесь на ACTION_PACKAGE_REPLACED
, и, если это был ваш пакет, который был заменен, посмотрите, поддерживаете ли вы страну, и поставьте Notification
в строке состояния.
Когда пользователь нажимает на кнопку, я регистрирую измененное состояние сети получателя широковещательной рассылки с помощью метода registerReceiver ().
Почему?
В зарегистрированном приемнике я всегда проверяю, подключен ли пользователь к сети Wi-Fi, и, если это так, загружает некоторые байты с сервера, чтобы проверить, поддерживается ли страна пользователя.
Вам не нужно BroadcastReceiver
для этого. Всякий раз, когда вы решите проверить наличие обновлений (например, один раз в день через AlarmManager
), вы можете проверить, подключено ли устройство к WiFi. Я не совсем уверен, почему вы заботитесь о Wi-Fi или нет, и я понятия не имею, как это связано с обновлением вашего приложения (обычно это делается в Android Market).
А когда получит поддержку, я отменим регистрацию получателя.
Он будет давно незарегистрирован.
Мое сомнение в этой идее заключается в том, как долго будет жить программно зарегистрированный приемник вещания? Возможно, получателю нужно будет жить месяцами.
Он будет жить столько времени, сколько у пользователя будет активность на экране. Вам необходимо отменить регистрацию получателя, прежде чем ваша деятельность будет приостановлена. Даже если вы намеренно пропустите приемник после того, как активность будет уничтожена, что является плохой идеей, она будет жить в течение нескольких минут, пока Android не завершит процесс.
Зарегистрируйте широковещательный приемник в манифесте Android, и, когда пользовательский запрос будет уведомлен, установите логическое значение shouldBeInformed в SharedPreferences и всегда проверяйте это значение, прежде чем переходить в широковещательный приемник.
Почему?