Я новичок в Android
, и у меня есть сценарий при разработке приложения в Android
, который я не могу понять, какой метод я должен использовать для сохранения и доступа к моим предпочтениям между различными действиями, виджетами, фоновыми службами, приемниками вещания и т. д. .
Я считаю, что для этого должен быть простой встроенный способ, но после некоторого поиска я только что наткнулся на несколько проводных статей, которые я вообще не могу понять, не указав на простой метод, чтобы помочь в моей ситуации.
Вот мой сценарий:
- У меня есть приложение, которое может иметь несколько действий, несколько виджетов, несколько фоновых служб, а также несколько широковещательных приемников (я понимаю, что мы также используем приемник для виджета)...
- Любой из упомянутых выше объектов может присутствовать или отсутствовать в зависимости от текущей ситуации, например, виджет может присутствовать на главном экране, в то время как никакие действия или фоновые службы не выполняются, или фоновая служба может работать, в то время как никакие действия не выполняются. момент, и это продолжается для всех других возможных ситуаций таким же образом ...
- Также возможно, что, хотя виджет присутствует на главном экране, также выполняется действие, и может быть даже запущена служба и некоторые другие.
- Службы могут работать в отдельном потоке.
Итак, исходя из этих условий, какой стандартный метод используется в Android
для достижения моей цели сохранения данных и доступа между ними?
Мой обычный подход использует SharedPreferences
следующим образом:
SharedPreferences p = getSharedPreferences("Settings", MODE_PRIVATE);
Но первая проблема заключается в том, что SharedPreferences
нужен Context
, а у меня его нет, например, в сервисе. Даже если я каким-то образом передам Context
своей основной активности службе, что произойдет, когда эта активность будет завершена или уничтожена, в то время как та же служба все еще работает в отдельном потоке?
Поэтому, пожалуйста, если кто-нибудь может указать мне правильный способ сохранения и доступа к данным в таком сценарии или способ иметь всегда действительный Context
внутри сервисов и виджетов и т. д. без какой-либо необходимости присутствия активности, поэтому вызов, например, getSharedPreferences("Settings", MODE_PRIVATE)
из что Context
всегда возвращает мне один и тот же объект SharedPreferences
, с которым я могу работать с данными, хранящимися в нем из других источников, я был бы очень рад. Спасибо!
Service
– этоContext
- person Onik   schedule 17.10.2015this.getContext
в службе илиthis.getSharedPreferences
? - person Night2   schedule 18.10.2015getSharedPreferences(x)
таким же, какgetSharedPreferences(x)
в моей активности в другом потоке? - person Night2   schedule 18.10.2015