programing

getDefaultSharedPreferences와 getSharedPreferences의 차이

bestprogram 2023. 10. 29. 19:52

getDefaultSharedPreferences와 getSharedPreferences의 차이

사이의 차이점은 무엇입니까?getDefaultSharedPreferences그리고.getSharedPreferences안드로이드에서?누가 설명해 주실 수 있습니까?

getDefaultSharedPreferences는 m "과 같은 합니다. example와 같은 기본 이름을 사용합니다.뭔가 _ prefe차이"라는 말입니다.getSharedPreferences이름이 필요합니다.

getDefaultSharedPreferences실지로Context.getSharedPreferences(아래는 Android 소스에서 직접 전송됨):

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

기본적인 차이점을 살펴보도록 하겠습니다.

  1. 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.

  2. 대안적인 방법은getSharedPreferences(name,mode)특정 기본 설정(파일) 이름과 작업 모드(예: 개인, world_readable 등)를 나타낼 것을 요구합니다.

copolii가 언급한 바와 같이, 결과는 동일하지만 첫 번째 옵션은 더 간단하며 여러 기본 설정 파일로 분할할 수 있는 유연성이 부족합니다. 두 번째 옵션은 다음과 같습니다.getSharedPreferences(). MODE_WORLD_READABLE 동작 지시자를 사용하여 앱 간의 기본 설정을 공유하는 것도 가능합니다.getSharedPreferences(), 거의 사용되지 않습니다.

임호,getDefaultSharedPreferences()앱의 다른 모듈이 다른 기본 설정 파일을 사용하지 않도록 하지 않는 한 오타 및 혼동이 발생하기 쉬운 여러 기본 설정 파일 이름을 혼동하지 않고 안전하게 사용할 수 있습니다.일반적으로 이것은 필요 없습니다.앱이 많은 파라미터를 저장해야 한다면 데이터 보호 기능도 향상되므로 외부 데이터베이스를 사용하는 것이 더 나을 것입니다.

getSharedPreferences()를 정기적으로 사용하고 DefaultSharedPreferences()를 사용하지 않는 좋은 이유를 아는 사람이 있다면 여기에 댓글을 달아 주십시오.

이 게시물이 좀 오래된 것은 알지만, 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 참조

기본 공유 환경설정을 사용하는 것은 패키지 이름과 함께 공유 환경설정을 사용하는 것과 같지 않습니다.

context.getSharedPreferences(getPackageName(), MODE_PRIVATE);

=> 공유 선호도 이름 : "com.my .package name"

PreferenceManager.getDefaultSharedPreferences(context);

=> 공유 선호도 이름 : "com.my .packaguename_prefeents"

세 번째 기능도 있습니다.

public SharedPreferences Activity.getPreferences(int mode) {}

여기서 내 질문과 답변 보기: 안드로이드의 공유 선호도를 엉망으로 만들기 - 어떤 기능을 사용할 것인가?

getSharedPreferences()와 getDefaultSharedPreferences()는 모두 응용프로그램 수준의 환경설정에 액세스하는 데 사용됩니다.getDefaultSharedPreferences()는 Android의 전체 환경설정 프레임워크에 따라 작동하는 공유 환경설정을 얻는 데 사용됩니다.getDefaultSharedPreferences()는 기본적으로 Preferences Activity와 함께 작동하는 SharedPreferences 개체를 제공하므로 사용하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/5946135/difference-between-getdefaultsharedpreferences-and-getsharedpreferences