如何访问运行时服务上的SharedPreference



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

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

但当那个时间出现时,如何访问那个SharedPreference?

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

由于SharedPreference是根据上下文存储的,但在运行时我的应用程序可能无法打开。那么,我如何在另一个活动的运行时访问此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;
}
}

最新更新