Как получить доступ к SharedPreference на сервисе выполнения? - PullRequest
0 голосов
/ 22 апреля 2020

Я знаю, как хранить SharedPreference и как получить к ним доступ. В некоторых случаях моего приложения я буду хранить время и строку для sharedPreference. В то же время, в зависимости от того времени, я устанавливаю приемник вещания.

Когда появится это время, мое приложение может быть открыто или нет. Метод обслуживания onReceive Я перенаправляю пользователя на какое-либо действие, которое показывает это время и строку пользователю.

Но когда появится это время, как получить доступ к этому SharedPreference?

private static SharedPreferences sharedPreference = PreferenceManager.getDefaultSharedPreferences(this);

Как SharedPreference хранится в зависимости от контекста, но во время выполнения мое приложение может быть не открыто. Итак, как я могу получить доступ к этой SharedPreference во время выполнения другого действия?

1 Ответ

0 голосов
/ 22 апреля 2020

Во время выполнения вашего приложения, по крайней мере, один компонент работает, это может быть Service, BroadCastreceiver или Activity .. Все эти компоненты имеют прикрепленный к ним контекст. В случае Activity или Service вы можете напрямую указать ClassName.this вместо Context, поскольку эти два класса получены из ContextWrapper.

В случае BroadcastReceiver вы получаете контекст в качестве параметра в #onReceive ..

class Receiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
         SharedPreferences sharedPreference = PreferenceManager.getDefaultSharedPreferences(context);
    }
}

Для услуги вы можете напрямую использовать this.

class MyService extends Service {
    SharedPreferences sharedPreference;
    @Override
    public void onCreate() {
        super.onCreate();
        sharedPreference = PreferenceManager.getDefaultSharedPreferences(this);
    }
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
...