我知道如何存储SharedPreference以及如何访问它们。在应用程序的某些事件中,我会将时间和字符串存储到sharedPreference。同一时间,取决于那个时间,我正在设置广播接收机。
当该时间出现时,我的应用程序可能已打开,也可能未打开。onReceive服务方法我正在将用户重定向到某个活动,该活动向用户显示此时间和字符串。
但当那个时间出现时,如何访问那个SharedPreference?
private static SharedPreferences sharedPreference = PreferenceManager.getDefaultSharedPreferences(this);
由于SharedPreference是根据上下文存储的,但在运行时我的应用程序可能无法打开。那么,我如何在另一个活动的运行时访问此SharedPreference呢?
在应用程序的任何运行时,至少有一个组件正在运行,它可以是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;
}
}