본문 바로가기
안드로이드 스튜디오 앱 개발/개념 안드로이드 스튜디오

[Android Studio] sharedPreferenced의 저장과 조회 알아보기!! (예제 포함) - 망댕이의 앱 개발

by 망댕이 2024. 4. 16.
반응형

 

앱을 개발하다 보면 작은 양의 데이터나 간단한 설정값을 저장하고 관리하여 앱에서 이 데이터를 다음 실행 시에도 해당 데이터를 사용할 수 있도록 하는 코드를 구현해야합니다. 오늘은 안드로이드 스튜디오에서 이와 같은 작은 양의 데이터를 저장 및 조회를 위해 사용하는 SharedPreferences에 대해 알아보도록 하겠습니다.

 

SharedPreferences는 기본적으로 key값과 value 값 2개로 데이터를 저장합니다.

즉, 해당 데이터의 이름은 Key값이고 전달하고자 하는 데이터 값은 value 값입니다.

그래서 Key값을 호출하면 Key값에 해당하는 데이터 value값을 불러와 사용하게 됩니다.

 
<SharedPreferences에 대한 보충 설명>


  1. 저장소 위치: SharedPreferences 데이터는 XML 파일로 저장됩니다. 이 XML 파일은 앱의 내부 또는 외부 저장소에 저장될 수 있습니다.
  2. 키-값 쌍: 데이터는 고유한 키(key)와 연결된 값(value)으로 저장됩니다. 키는 문자열로 정의되며 값을 검색할 때 사용됩니다.
  3. 모드(Mode): SharedPreferences는 다양한 모드를 제공하며, 주로 사용되는 모드에는 MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE 등이 있습니다. MODE_PRIVATE 모드는 해당 앱에서만 데이터에 접근할 수 있도록 합니다.
  4. 값의 유형: SharedPreferences에서 값으로 사용되는 데이터 유형은 문자열(String), 정수(int), 부동 소수점(float), 불리언(boolean), 롱(long) 등이 있습니다. 사용자 정의 객체나 구조화된 데이터를 SharedPreferences에 직접 저장하기는 어렵습니다.

간단한 예제를 들어 설명하면 2개의 액티비티에서 aActivity는 sharedPreferences를 이용해 저장, bBctivity는 sharedPreferences를 이용해 조회를 하여 textView에 띄우는 코드를 구현해보도록 해봅시다.

 

public class aActivity extends AppCompatActivity {

    private EditText editText;
    private Button button;
    private SharedPreferences sharedPreferences;

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

        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);

        // SharedPreferences 객체 가져오기
        // SharedPreferences의 이름 생성, SharedPreferences 모드 설정
        sharedPreferences = getSharedPreferences("SharedPreferences's name", MODE_PRIVATE);

        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = editText.getText().toString();

                // SharedPreferences에 저장
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putString("Text", text);
                editor.apply();

                // bActivity로 화면 전환
                Intent intent = new Intent(getApplicationContext(), bActivity.class);
                startActivity(intent);
                finish();
            }
        });
    }
}
 

aActivity에서 button을 눌렀을 때 editText에 입력한 문자(String)이 sharedPreferences를 이용하여 저장하고 그와 동시에 bActivity로 화면이 전환되도록 하는 코드입니다.

 

public class RetrieveDataActivity extends AppCompatActivity {

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

        // SharedPreferences 객체 가져오기
        sharedPreferences = getSharedPreferences("SharedPreferences's name", MODE_PRIVATE);
        
        // 데이터 조회
        String data_text = sharedPreferences.getString("Text", ""); 
        // "Text"에서 데이터 조회, ""는 기본값
       
        // 조회된 데이터를 TextView에 표시
        TextView textView = findViewById(R.id.textView);
        textView.setText(data_text);
    }
}
 

bActivity에서는 sharedPreferences으로 Key값에 해당하는 데이터를 조회한 다음 setText(data_text)를 이용하여 textView에 조회하도록 코드를 구성했습니다.

 

이렇게 간단한 데이터들은 SharedPreferences로 데이터를 저장하고 쉽게 조회할 수 있는 강점을 가지고 있습니다. 그렇기에 앱에서 최초인증 여부나 로그인 여부등 간단 여부등을 저장하고 체크하는데 정말로 이용하기 좋은 매커니즘입니다.

 

 

반응형