Могу ли я получить данные из общих настроек внутри службы?
Я разрабатываю приложение для Android. Я использую Android 2.2
В моем приложении я собираю данные GPS и отправляю их на обслуживание с 1-часовым интервалом времени. Если пользователь выходит из приложения, он также работает (требуется).
Я использую 2 службы (определенные пользователем), один для захвата данных GPS и других для отправки на сервер.
Здесь мое сомнение
-
В сервисе можно использовать общие настройки.
-
Если мы сохраняем любые данные в общих предпочтениях в любой активности приложения, можем ли мы использовать эти данные в сервисе с помощью общих настроек?
Ответы
Ответ 1
Я нахожу решение.
Внутри службы мы вызываем следующий метод для получения общих настроек
myapp.bmodel.getApplicationContext().getSharedPreferences("myPrefs_capture_gps_per_hour", Context.MODE_PRIVATE);
В приведенном выше коде myapp является объектом класса приложения, который получен из Application
Ответ 2
Вы можете получить доступ к экземпляру общих настроек по умолчанию, который будет использоваться во всех классах Activity
и Service
, вызвав PreferenceManager.getDefaultSharedPreferences(Context context)
:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
Это отлично подходит для хранения простых примитивов (например, булевых) или сериализуемых объектов. Однако, если вы захватываете множество данных о местоположении, вместо этого вы можете использовать базу данных SQLite.
Ответ 3
Вам нужен контекст, чтобы получить доступ к общим настройкам. Лучший способ - создать MyApplication
как потомок класса Application
, создать там preferences
и использовать их в остальной части вашего приложения как MyApplication.preferences
:
public class MyApplication extends Application {
public static SharedPreferences preferences;
@Override
public void onCreate() {
super.onCreate();
preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);
Например, если вам нужен доступ к вашим предпочтениям в другом месте, вы можете вызвать это, чтобы прочитать настройки:
String str = MyApplication.preferences.getString( KEY, DEFAULT );
Или вы можете вызвать это, чтобы сохранить что-то в настройках:
MyApplication.preferences.edit().putString( KEY, VALUE ).commit();
(не забудьте вызвать commit()
после добавления или изменения настроек!)
Ответ 4
Да, Shivkumar, вы можете использовать свои настройки в любых сервисах, как обычно, как вы используете в своей деятельности.
то же самое, что и
SharedPreferences preferences = getSharedPreferences("<PrefName>",
MODE_PRIVATE);
Ответ 5
Существует два способа создания экземпляра SharedPreference
:
Случай 1:
SharedPreferences preferences = activity.getSharedPreferences("<PrefName>", MODE_PRIVATE);
Случай 2:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Обратите внимание, если вы создаете предпочтение с тем же именем (случай 1) или тот же контекст (случай 2) даже в разных местах, оно все равно то же самое и может совместно использовать данные.