public class MainActivity extends Activity { 
    private SharedPreferences pref = null; 
    private EditText nameEditText = null; 
    private EditText emailEditText = null; 
    private EditText phoneEditText = null; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        pref = getSharedPreferences("net.cranix.android.preftest",Activity.MODE_PRIVATE); 
        nameEditText = (EditText) findViewById(R.id.nameEditText); 
        emailEditText = (EditText) findViewById(R.id.emailEditText); 
        phoneEditText = (EditText) findViewById(R.id.phoneEditText); 
        nameEditText.setText(pref.getString("name", "")); 
        emailEditText.setText(pref.getString("email", "")); 
        phoneEditText.setText(pref.getString("phone", ""));
 
    } 
    @Override 
    protected void onStop() { 
        super.onStop(); 
        SharedPreferences.Editor editor = pref.edit(); 
        editor.putString("name", nameEditText.getText().toString()); 
        editor.putString("email", emailEditText.getText().toString()); 
        editor.putString("phone", phoneEditText.getText().toString()); 
        editor.commit();
 
    } 
}

이렇게 현재 화면 정보 같은 작은 정보들을 저장하기 위해서 안드로이드는 SharedPreferences 라는 클래스를 제공한다.

이 클래스는 위 소스 에서와 같이 getSharedPreferences 메소드로 객체를 생성 할 수 있다.

이렇게 생성된 SharedPreferences 객체는 getString 과 같은 getXXX 형태의 메소드로 값을 얻어 올 수 있다.

위 소스에서 Activity 가 종료되는 onStop 메소드 에서는 SharedPreferences 에다가 현재 환경을 저장하고 있다.

SharedPreferneces 는 pref.edit() 로 Editor 객체를 얻은후 putString 으로 값을 변경한다. 다 변경했으면 editor.commit() 함수로 변경된 내용을 저장한다.

 

위에서도 언급했듯이 SharedPreferences 는 임시변수나 현재 UI 정보같은 작은 크기의 정보를 저장하기 적합하다. 조금 더 큰 데이터는 직접 파일에 쓰거나 SQL 을 사용하여 DB 에 저장하도록 하여야 한다.


출처 - http://cranix.net/305

Posted by 레미파
,