반응형

유튜브 채널 hongdroid홍드로이드님의 강의를 보고 학습했습니다.

 

hongdroid홍드로이드

안녕하세요 구디에서 신입 앱 개발자로서의 삶을 살아가고 있는 홍드로이드 라고 합니다. 이 채널에서는 IT 계열 앱 개발자는 도대체 어떻게 하루를 보낼까 하는 분들을 위해서 만들어졌습니다.

www.youtube.com

xml 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <EditText
        android:id="@+id/et_save"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        />
 
 
</LinearLayout>
cs

Java코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.example.sharedexample;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
 
public class MainActivity extends AppCompatActivity {
 
    private EditText et_save;
    String shared = "file";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        et_save = (EditText)findViewById(R.id.et_save);
 
        SharedPreferences sharedPreferences = getSharedPreferences(shared, 0);
        String value = sharedPreferences.getString("str","");
        et_save.setText(value);
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
 
        SharedPreferences sharedPreferences = getSharedPreferences(shared,0);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        String value = et_save.getText().toString();
        editor.putString("str",value);
        editor.commit();
    }
}
cs

이번 시간에는 SharedPreferences를 학습했다.

SharedPreferences를 사용하면 앱을 재실행했을 때, 앱이 종료되기 전의 데이터를 사용할 수 있다.

EditText에 데이터를 저장하고, SharedPreferences를 이용해 데이터를 다시 사용하는 앱을 구현해보았다.

1. SharedPreferences

  1) SharedPreferences sharedPreferences = getSharedPreferences( shared, 0 );

   getSharedPreferences() 함수를 이용하여 SharedPreferences를 정의했다.

   getSharedPreferences()는 두가지의 매개변수를 갖는데, 

   첫 번째 인자는 키 값을 의미하고

   두 번째 인자는 모드를 의미하는데

    모드는

    MODE_PRIVATE( 자기 앱 내에서만 사용 )

    MODE_WORLD_READABLE( 다른 앱에서 읽기 가능 )

    MODE_WORLD_WRITEABLE( 다른 앱에서 쓰기 가능 ) 세 가지가 있다.

   여기서 0은 MODE_PRIVATE을 의미한다.

  2) 키 값

   이건 주의사항인데 21번째 줄의 "key"와 32번째 줄의 "key" 는 키 값을 의미한다.

   같은 키 값을 사용하지 않으면 에러가 발생한다.( 같은 데이터를 의미할 때 )

2. Editor

  1) SharedPreferences.Editor editor = sharedPreferences.edit();

  SharedPreferences에 값을 저장하기 위해서는 에디터가 필요하다.

  SharedPreferences 클래스의 edit 함수를 이용하여 에디터를 선언한다.

  2) editor.commit(); 

  SharedPreferences에 값을 넣은 후 저장하는 의미를 갖고 있다.

  commit함수 말고 apply함수를 써도 된다고 하나, 강의에서 commit함수를 사용하였으므로 나도 commit을 사용했다.

3. void onDestroy()

  onCreate 외에 앱을 종료시켰을 때( 정확히는 액티비티를 벗어났을 때 ) 실행되는 함수인 onDestroy를 호출하였다.

  이는 앱이 종료될 때 데이터를 SharedPreferences에 저장하기 위해 호출하였다.

  onDestroy같이 새로운 생명주기를 넣어줄 때는 안드로이드 스튜디오 상에서 Ctrl + O 단축키를 이용하면 된다.

 

출력화면 - 앱 재실행 시

 

반응형

+ Recent posts