앱 만들기/안드로이드

1인 개발자가 꼭 알아야할 안드로이드의 기술 #데이터 저장하기

나도 처음이야 2020. 9. 15.

SharedPreference 사용법.

 

* 간략한 데이터를 저장하기 위해서는 SharedPreference 라는 클래스를 사용하면 됩니다.

  File 에 직접 쓰거나, DB에 저장하는 것 보다 훨씬 간단하고 빠릅니다.

  그렇기에, 간단한 데이터 저장등은 SharedPreference 를 사용하세요.

그럼 사용방법을 확인 해보겠습니다.

 

1. 데이터 저장하기.

   필요한 데이터를 저장합니다. 형식은 하기와 같습니다. 

1
2
3
4
5
6
7
8
        // SharedPreferences 저장하기!
        // data/data/패키지명/shared_prefs/"setting".xml.
        SharedPreferences sharedPreferences = context.getSharedPreferences("setting", context.MODE_PRIVATE);
        // SharedPreferences 를 제어하는 editor 를 만든다. 해당 editor 로 저장기능 사용함.
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("correctAvg" , correctAvgPercent);
        editor.putInt("tryNum" , tryNum);
        editor.commit();
cs

SharedPreferences sharedPreferences = context.getSharedPreferences("setting", context.MODE_PRIVATE);

 

getSharedPreference() 함수를 Activity 가 아닌 클래스 나 프래그먼트에서 사용할때는

해당 Activity의 context 를 인자로 받아서, context.getSharedPreferences 로 호출해야 됩니다.

저는 위 저장 코드를 함수로 만들어서 타 클래스에서 하기 처럼 사용했습니다.

 

public void saveResult(Context context){
  //SharedPreferences 저장하기!
  // setting 이라는 파일명으로 저장한다.
  // data/data/패키지명/shared_prefs/"setting".xml.
  SharedPreferences sharedPreferences = context.getSharedPreferences("setting", context.MODE_PRIVATE);
  // SharedPreferences 를 제어하는 editor 를 만든다. 해당 editor 로 저장기능 사용함.
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putInt("correctAvg" , correctAvgPercent);
  editor.putInt("tryNum" , tryNum);
  editor.commit();
}

 

프래그먼트에서 호출은 하기 처럼, Activity 를 얻어와서 불러줍니다. 간단하죠?

GameMainActivity activity = (GameMainActivity)getActivity();
loadResult(activity);

 

 

* 중요한 점!

sharedPreferences 변수는 Activity 멤버함수인 getSharedPreferences 에서 받아옵니다.

getSharedPreferences() 의 첫번째 매개변수 값은 저장될 파일 이름입니다.

자신이 원하는 이름을 적어주세요.

이 파일은 

data/data/패키지명/shared_prefs/"setting".xml. 에 xml 파일형식으로 저장 됩니다.

 

그다음은 editor 를 이용해서 데이터를 저장하는 코드입니다.

editor.putInt() 첫번째 인자 값이 바로 key 가 되고, 두번째 인자값이 바로 데이터 입니다.

불러올때 해당 key 값을 이용해서 데이터를 가져오게됩니다. key 값 역시 개발자가 이름을 지어줍니다.

 

SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putInt("tryNum" , tryNum);

editor.commit(); // 저장 합니다.

 

2. 데이터 읽어오기.

 저장한 데이터를 읽어옵니다. 이 역시 함수로 만들어두면 편리하겠죠?

1
2
3
4
5
6
7
8
 public void loadResult(Context context){
 
        //SharedPreferences 불러오기!
        SharedPreferences sharedPreferences= context.getSharedPreferences("setting", context.MODE_PRIVATE);
        correctAvgPercent = sharedPreferences.getInt("correctAvg",0);
        tryNum = sharedPreferences.getInt("tryNum",0);
 
    }
cs

불러올때는, 위와 같이 getSharedPreferences 첫번째 인자값에 자신이 만든 파일 이름과 하기 코드를 이용하여

데이터를 가져옵니다. 다양한 데이터 타입을 가져올 수 있습니다.

자신이 저장한 "키"값에 해당하는 데이터를 불러오고, 데이터가 없을때는 기본으로 0을 가져온다는 의미입니다.

sharedPreferences.getInt("correctAvg",0);

 

간단한 데이터 저장을 위해서는

SharedPreference 의 저장하기, 읽어오기 기능만 잘 활용해서 멋진 앱을 만들 수 있답니다.

감사합니다.

반응형

댓글