Подтвердить что ты не робот

Могу ли я получить данные из общих настроек внутри службы?

Я разрабатываю приложение для Android. Я использую Android 2.2

В моем приложении я собираю данные GPS и отправляю их на обслуживание с 1-часовым интервалом времени. Если пользователь выходит из приложения, он также работает (требуется).

Я использую 2 службы (определенные пользователем), один для захвата данных GPS и других для отправки на сервер.

Здесь мое сомнение

  • В сервисе можно использовать общие настройки.

  • Если мы сохраняем любые данные в общих предпочтениях в любой активности приложения, можем ли мы использовать эти данные в сервисе с помощью общих настроек?

4b9b3361

Ответ 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) даже в разных местах, оно все равно то же самое и может совместно использовать данные.