SharedPreferences

Posted by ITPangPang
2016. 3. 30. 00:07 안드로이드(android)/프레퍼런스(Preference)



SharedPreferences



- 간단한 데이터를 저장할때 사용한다.

- 코드가 그리 어렵지 않다

- 한번만 짜두고 보관하면 나중에 쉽게 복붙해서 

  사용할 수 있다.

- 앱을 삭제하면 자료가 사라진다.




위에처럼 앱을 사용하다가 TextView에 Hello를 입력하고 

난 후에 앱을 종료하고 다시 시작하게 되면



위와 같이 다 날라가게 된다. 

이럴때 SharedPreferences를 사용하게 되면 앱을 껐다 

켜도 Textview의 내용을 유지시킬 수 있다.



Save버튼을 누르면 저장되는 코드이다.

public class MainActivity extends Activity
{
TextView tv = null;
Button btn_save = null;
Button btn_input = null;
EditText et = null;
String tempStr;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

setup();
loadPreference();
}

private void setup()
{
tv = (TextView)findViewById(R.id.tv);
btn_save = (Button)findViewById(R.id.btn_save);
btn_input = (Button)findViewById(R.id.btn_input);
et = (EditText)findViewById(R.id.et);

btn_save.setOnClickListener(myListener);
btn_input.setOnClickListener(myListener);
}

View.OnClickListener myListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_input :
tempStr = et.getText().toString();
tv.setText(""+tempStr);
break;

case R.id.btn_save :
savePreference();
break;
}
}
};

//저장하기
public void savePreference()
{
SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("Save", tempStr);
editor.commit();
}

//저장한것 불러오기
public void loadPreference()
{
SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
tempStr = pref.getString("Save", null);
tv.setText(""+tempStr);
}
}


Input버튼을 누르면 

EditText에 있는 내용이 

TextView에 setText하면서 

String변수인 tempStr에 저장한다.


이 상태에서는 

앱을 종료했을때 

tempStr에 있는 내용이 날아가지만

Save버튼을 누르면 savePreference()가 

실행되면서 tempStr에 반영구 저장되게 된다.


OnCreate()에서 loadPreference()를 불러오면서 

저장되있던 tempStr의 내용을 

다시 TextView에 찍어준다.



다음번에는 종료버튼을 눌렀을때 저장시키는 

방법과 String외에도 int boolean값 등등 저장하는 것을

해야겠다.


SharedPreferences는 간단한 자동로그인 

같은 기능을 할때도 유용하게 사용되니 알아두면 좋다.