반응형
안드로이드의 저장방식 중 하나.
많은양 data 저장 -> SQLite 이용(ex- 500명 학생 data)
소규모 data 저장 -> Preferences 이용 (ex- 설정data )
...................................
1. 저장 - 영구적 저장이라 앱 껐다 켜도 저장되어있음.
SharedPreferences 객체
(name : 암거나, 나중에 이걸로 검색할거임/ MODE_PRIVATE : 개인목적으로 사용한다 . 보통 이걸로 기본설정.)
SharedPreferences.Editor 데이터저장 객체
ex) editor.putBoolean(name, value)
하나의 이름으로 여러문자열 저장하고플때는 HashSet이용
commit : 저장완료
.............................................................
2. 읽어오기
SharedPreferences 객체 그대로 가져오기(name, mode)
저장했던 data들도 그대로 가져오기.(key, dafault값 : 해당 data검색 안될때)
hashSet으로 저장한 문자열은 for문이용해서 읽어오기.
package com.www.preferences;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
//define variables
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//connect to xml
textView = findViewById(R.id.textView);
}
//click button -> save(by using preferences) , onlick도 설정해야
public void btnMethod(View view){
//Preferences 객체 추출
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
//name : 아무거나, 이거로 검색할거임
//mode_private : 개인목적으로 사용. 보통 이게 default.
//data 저장위한 객체 추출
SharedPreferences.Editor editor = pref.edit();
//data 저장
editor.putBoolean("data1", true); //key, value
editor.putFloat("data2", 11.11f);
editor.putInt("data3",100);
editor.putLong("data4",100000L);
editor.putString("data5","문자열 data");
HashSet<String> set = new HashSet<String>(); //문자열 여러개 저장할때 Hashset이용
set.add("문자열1");
set.add("문자열2");
set.add("문자열3");
set.add("문자열4");
editor.putStringSet("data6", set); //key, value
editor.commit(); //저장완료
textView.setText("저장완료");
}//finish
//click button -> Read (by using preferences) , onlick도 설정해야
public void BtnMethod2(View view){
//객체추출 ->위와 동일하게 name, mode
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
//위와 동일하게 data read
boolean data1 = pref.getBoolean("data1", false); //key, default value:값없을때
float data2 = pref.getFloat("data2",0.0f);
int data3 = pref.getInt("data3", 0);
long data4 = pref.getLong("data4",0L);
String data5 = pref.getString("data5", null);
Set<String> data6 = pref.getStringSet("data6", null);
textView.setText("data1 : "+ data1 + "\n");
textView.append("data2 : "+ data2 + "\n");
textView.append("data3 : "+ data3 + "\n");
textView.append("data4 : "+ data4 + "\n");
textView.append("data5 : "+ data5 + "\n");
for(String str : data6){ //hashset으로 저장한 문자열은 for문이용해 출력.
textView.append("data6 : "+ str + "\n");
}
}//finish
}