Android에서 "애플리케이션 설정"을 수행하는 가장 좋은 방법은 무엇입니까? [닫은]


108

Android 애플리케이션에 대한 일부 애플리케이션 설정 (예 : API의 URL 및 테스트를위한 일부 설정)을 저장하고 싶습니다.

저는 대부분 .NET 개발자로 일 app.config하기 때문에이 목적으로 파일을 사용하는 데 익숙합니다 . Android에서이를 수행하는 좋은 방법은 무엇입니까?

답변:


148

많은 애플리케이션은 특정 애플리케이션 또는 활동의 설정에서 사용자 기본 설정을 캡처하는 방법을 제공 할 수 있습니다. 이를 지원하기 위해 Android는 간단한 API 세트를 제공합니다.

기본 설정은 일반적으로 이름 값 쌍입니다. 애플리케이션의 다양한 활동에서 "공유 기본 설정"으로 저장할 수 있습니다 (현재 프로세스간에 공유 할 수 없음). 또는 특정 활동에 저장해야하는 것이 될 수 있습니다.

  1. 공유 기본 설정 : 공유 기본 설정은 응용 프로그램의 모든 구성 요소 (활동, 서비스 등)에서 사용할 수 있습니다.

  2. 활동 처리 환경 설정 : 이러한 환경 설정은 활동에서만 사용할 수 있으며 애플리케이션의 다른 구성 요소에서 사용할 수 없습니다.

공유 기본 설정 :

공유 된 기본 설정은 클래스 getSharedPreferences메서드의 도움으로 관리됩니다 Context. 기본 설정은 기본 파일 (1)에 저장되거나 기본 설정을 참조하는 데 사용할 파일 이름 (2)을 지정할 수 있습니다.

(1) 파일 이름을 지정할 때 인스턴스를 얻는 방법은 다음과 같습니다.

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATE기본 설정의 작동 모드입니다. 기본 모드이며 생성 된 파일은 호출 응용 프로그램에서만 액세스 할 수 있습니다. 지원되는 다른 두 모드는 MODE_WORLD_READABLEMODE_WORLD_WRITEABLE. MODE_WORLD_READABLE다른 응용 프로그램 에서는 생성 된 파일을 읽을 수 있지만 수정할 수는 없습니다. MODE_WORLD_WRITEABLE다른 응용 프로그램의 경우 에도 생성 된 파일에 대한 쓰기 권한이 있습니다.

(2) 권장되는 방법 은 파일 이름을 지정하지 않고 기본 모드로 사용하는 것입니다.

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

마지막으로 환경 설정 인스턴스가 있으면 다음은 환경 설정 에서 저장된 값검색하는 방법입니다 .

 int storedPreference = preferences.getInt("storedInt", 0);

기본 설정 파일 개체에 저장 하려면 SharedPreference.Editor사용되어야합니다. 클래스 Editor의 중첩 된 인터페이스입니다 SharedPreference.

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

Editor는 remove()clear()파일에서 기본 설정 값을 삭제하는 방법도 지원 합니다.

활동 기본 설정 :

공유 기본 설정은 다른 응용 프로그램 구성 요소에서 사용할 수 있습니다. 그러나 다른 구성 요소와 기본 설정을 공유 할 필요가없고 활동 개인 기본 설정을 원하는 경우. getPreferences()활동 방법의 도움으로 그렇게 할 수 있습니다 . 이 getPreference메서드는 getSharedPreferences()기본 설정 파일 이름에 대한 활동 클래스 이름과 함께 메서드를 사용합니다 .

다음은 환경 설정을 가져 오는 코드입니다.

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

값을 저장하는 코드도 공유 환경 설정의 경우와 동일합니다.

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

데이터베이스에 활동 상태를 저장하는 것과 같은 다른 방법을 사용할 수도 있습니다. 참고 Android에는 android.preference. 패키지는 애플리케이션 기본 설정 UI를 구현하는 클래스를 정의합니다.

더 많은 예제를 보려면 개발자 사이트에서 Android의 데이터 저장소 게시물을 확인하세요 .


1
감사. 내가해야 할 일은 XML 파일을 사용하는 것 같지만 (또는 XML을 처음로드 할 데이터로 사용할 수도 있음) 내 프로젝트의 다른 부분에 유용합니다.
Tim Almond

1
init에 xml 파일을 사용할 수 있습니다. 다음과 같이 전화해야합니다PreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
Pentium10

3
이 가이드는 너무 유용 할 수있다 : developer.android.com/guide/topics/ui/settings.html
웅 트란

1
+1. 염두에 두어야 할 작은 부분입니다. preferences객체에 값을 설정 한 후 , 전자가 백그라운드에서 저장을 처리하므로 호출 editor.apply()을 권장 editor.commit()합니다.
Anindya Chatterjee 2015-08-31

2
나는 여기서 약간 혼란 스럽습니다. sharedPreferences는 앱 설정이 아닌 앱에 사용자 설정을 저장하기위한 것입니다. 사용자 (및 저도)는 앱 설정, ex API URL 또는 앱이 제대로 작동하는 데 사용하는 기타 설정을 저장할 위치를 궁금해했습니다.
albanx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.