如何在 运行 时间服务上访问 SharedPreference?

How to access SharedPreference on run time service?

我知道如何存储 SharedPreference 以及如何访问它们。 在我的应用程序的某些事件中,我会将时间和字符串存储到 sharedPreference。 在同一时间,取决于我正在设置广播接收器的时间。

当那个时间出现时,我的应用程序可能已打开,也可能未打开。 onReceive 服务方法我将用户重定向到一些 activity,它向用户显示这个时间和字符串。

但是当那个时候出现怎么访问那个SharedPreference呢?

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

作为 SharedPreference 根据上下文存储,但在 运行 时我的应用程序可能未打开。 那么我如何才能在另一个 activity 的 运行 时间访问此 SharedPreference?

在您的应用程序的任何运行时,至少有一个组件是 运行 它可以是 ServiceBroadCastreceiverActivity ..所有这些组件都附加了一个上下文给他们。 在 ActivityService 的情况下,您可以直接用 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;
    }
}