Я делаю небольшое приложение для Android, которое запускает службу переднего плана, которая слушает и уведомляет пользователя всякий раз, когда приходит новое SMS-сообщение. Когда служба запускается, она регистрирует BroadcastReceiver
с действием android.provider.Telephony.SMS_RECEIVED
в IntentFilter и отменяет ее регистрацию при остановке. Приложение также получает пользовательские данные вместе со списком выбранных номеров из файла JSON во внутреннем хранилище, чтобы получатель мог отфильтровать, какой номер уведомлять пользователя. В моем MainActivity есть 3 кнопки: Start и Stop Service, а также кнопка Setting, которая перемещается в SettingActivity, которая отображает некоторую информацию о пользователе, а также список выбранных номеров и позволяет пользователю изменить его. Мой вопрос заключается в следующем: как лучше всего поделиться пользовательскими данными в приложении, чтобы все действия, а также службы и получатели могли получить к ним доступ? Я придумал и попробовал несколько способов:
- Получение пользовательских данных из файла в MainActivity, где запускается приложение, и передача его через Intent другим: это хорошо работало при передаче данных из Activity в Activity, а также в Service, но, похоже, не работает с
BroadcastReceiver
, поскольку оно зарегистрировано для прослушивания наSMS_RECEIVED
, а не на другую трансляцию, даже если я создаю новое намерение и транслирую его с помощьюstartBroadcast
- Создание статического объекта
user
: я попытался сделатьUser
общедоступным статическим, чтобы его можно было вызывать другим классом, когда MainActivity получает данные из файла, в основном помещаяpublic static User user
в MainActivity и вызывая егоMainActivity.user
в другом классе, это работало даже сBroadcastReceiver
, но я не уверен, что это правильный способ обмена данными в приложении. - Наконец, нужно получить данные из файла при вызове каждого действия или службы, это означает, что при вызове каждого действия или службы они снова получают данные из файла JSON. Я еще не пробовал, но думаю, что это может повлиять на производительность, а также на согласованность данных во всем приложении.
Итак, как правильно это реализовать? Пожалуйста, дайте мне какое-нибудь предложение. Спасибо, ребята, заранее.