Android 如何在运行时服务上访问SharedReference?

Android 如何在运行时服务上访问SharedReference?,android,service,sharedpreferences,Android,Service,Sharedpreferences,我知道如何存储共享引用以及如何访问它们。 在我的应用程序的某些事件中,我会将时间和字符串存储到SharedReference。 在同一时间取决于我设置广播接收器的时间 当该时间出现时,我的应用程序可能已打开,也可能未打开。 onReceive服务方法我正在将用户重定向到某个向用户显示此时间和字符串的活动 但是,当这个时间出现时,如何访问共享引用 private static SharedPreferences sharedPreference = PreferenceManager.getDef

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

当该时间出现时,我的应用程序可能已打开,也可能未打开。 onReceive服务方法我正在将用户重定向到某个向用户显示此时间和字符串的活动

但是,当这个时间出现时,如何访问共享引用

private static SharedPreferences sharedPreference = PreferenceManager.getDefaultSharedPreferences(this);
由于SharedReference根据上下文存储,但在运行时,我的应用程序可能未打开。
那么,我如何在运行时访问另一个活动的此共享参考?

在应用程序的任何运行时,至少有一个组件正在运行,它可以是
服务
广播接收器
活动
。。所有这些组件都附带了一个上下文。
在
活动
服务
的情况下,您可以直接使用
ClassName。这
代替
上下文
,因为这两个类派生自
ContextWrapper

如果是
BroadcastReceiver
,则在
#onReceive
中获取上下文作为参数

class Receiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
         SharedPreferences sharedPreference = PreferenceManager.getDefaultSharedPreferences(context);
    }
}
对于服务,您可以直接使用

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;
    }
}