답변:
getDefaultSharedPreferences
"com.example.something_preferences"와 같은 기본 이름을 사용하지만 이름 getSharedPreferences
이 필요 합니다.
getDefaultSharedPreferences
실제로 사용 Context.getSharedPreferences
(아래는 안드로이드 소스에서 직접 제공) :
public static SharedPreferences getDefaultSharedPreferences(Context context) {
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
}
private static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
private static int getDefaultSharedPreferencesMode() {
return Context.MODE_PRIVATE;
}
getDefaultSharedPreferencesName
백업 / 복원 프레임 워크에 이름이 필요하므로 나쁜 것은 공개되지 않습니다.
기본적인 차이점을 살펴 보겠습니다.
getDefaultSharedPreferences()
기본 환경 설정 파일 이름을 사용합니다. 이 기본값은 애플리케이션마다 설정되므로 동일한 앱 컨텍스트의 모든 활동이 다음 예제와 같이 쉽게 액세스 할 수 있습니다.
SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains("email")) {
String sEmailAddr = spref.getString("email", "");
}
기본 설정은 일반적으로에 저장됩니다 /data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.
대체 방법- getSharedPreferences(name,mode)
특정 기본 설정 (파일) 이름 및 작업 모드 (예 : 개인, 세계 _ 판독 가능 등)를 표시해야합니다.
copolii에서 언급했듯이 결과는 동일하지만 첫 번째 옵션은 더 단순하고의 두 번째 옵션으로 제공되는 여러 기본 설정 파일로 분할 할 수있는 유연성이 부족합니다 getSharedPreferences()
. MODE_WORLD_READABLE 작업 표시기를 사용하여 앱간에 환경 설정을 공유하는 것도 가능 getSharedPreferences()
하지만 거의 사용되지 않습니다.
getDefaultSharedPreferences()
앱의 다른 모듈이 다른 환경 설정 파일을 사용하지 않는 한 , IMHO 는 오타와 혼동되기 쉬운 여러 환경 설정 파일 이름을 혼동하지 않고 안전하게 사용할 수 있습니다. 일반적으로 이것은 필요하지 않습니다. 앱이 많은 매개 변수를 저장해야하는 경우 더 나은 데이터 보호 기능을 제공하므로 외부 데이터베이스를 사용하는 것이 좋습니다.
getDefaultSharedPreferences ()가 아닌 getSharedPreferences ()를 정기적으로 사용해야하는 합당한 이유를 알고있는 사람은 여기에 의견을 보내 주시기 바랍니다.
나는이 게시물이 약간 오래되었다는 것을 알고 있지만 v7 지원 라이브러리의 24.0.1 이후로 어디서나 컨텍스트를 사용하여 기본 환경 설정을 검색 할 수 있습니다
// context might be an application context, activity, ..
// so if you want to get your apps defaults, pass an activity context
PreferenceManager.getDefaultSharedPreferences(context)
https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences를 참조 하십시오.
세 번째 기능도 있습니다.
public SharedPreferences Activity.getPreferences(int mode) {}
내 질문 및 답변보기 : android의 공유 환경 설정이있는 엉망-어떤 기능을 사용해야합니까?
getSharedPreferences () 및 getDefaultSharedPreferences ()는 모두 애플리케이션 레벨 환경 설정에 액세스하는 데 사용됩니다. getDefaultSharedPreferences ()는 Android의 전체 환경 설정 프레임 워크에 따라 작동하는 공유 환경 설정을 가져 오는 데 사용됩니다. getDefaultSharedPreferences ()는 기본적으로 PreferenceActivity와 함께 작동하는 SharedPreferences 객체를 제공하므로 사용하는 것이 좋습니다.
Context
하나를 호출하려면 인스턴스가 필요하기 때문에 실제로 중요하지 않습니다 .