[Android SDK] 안드로이드: 간단한 데이터를 저장하고 싶을 때(SharedPreferences 사용예제)

 

 

 

안드로이드 스튜디오 2020. 12. 18. 17:27

 

앱이 종료되면 메모리에 저장되어 있던 데이터는 사라진다.

 

때때로 간단한 데이터를 앱에 저장해서 쓰고 싶을 때가 있다.

(예를 들면 로그인 정보) 

 

물론 DB나 파일을 이용하면 데이터를 읽고 써서 상태를 유지할 수 있지만 

 

SharedPreferences를 사용한다면 간단한 방법으로 필요한 데이터를 저장해 놓을 수 있다. 

 

 

 

 

<activity_main.xml>

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

<?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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit_text"
        android:hint="입력하세요"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="저장"
        />



    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:id="@+id/text_view"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</LinearLayout>

 

 

 


<MainActivity.java>

package org.techtown.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity{
    Button btn;
    EditText editText;
    TextView textView;
    String text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.button);
        editText = findViewById(R.id.edit_text);
        textView = findViewById(R.id.text_view);


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

                if(text != null)
                    textView.setText(text);
                editText.setText("");


            }
        });


    }

    @Override
    protected void onPause() { // Activity가 보이지 않을때 값을 저장한다. 
        super.onPause();
        saveState();
    }

    @Override
    protected void onStart() {  // Activity가 보이기 시작할때 값을 저장한다. 
        super.onStart();
        restoreState();
        if(text != null)
            textView.setText(text);

    }

    protected void saveState(){ // 데이터를 저장한다. 
        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.putString("text", text);

        editor.commit();


    }
    protected void restoreState(){  // 데이터를 복구한다. 
        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        if((pref!=null) && (pref.contains("text"))){
            text = pref.getString("text", "");
        }

    }
    protected void clearPref(){  // sharedpreference에 쓰여진 데이터 지우기 
        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.clear();
        text = null;
        editor.commit();
    }



}

 

 

 

 

 

 

반응형

 

 

[출처] https://seungjuitmemo.tistory.com/115

 

 

 


본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
153 [Android Studio] Google Play Console - 앱 API 수준 업데이트하기 (앱 업데이트 출시, 앱 API 수준 이상 타겟팅 방법, API 31 To 33) file 졸리운_곰 2024.08.28 203
152 [android studio] 안드로이드 앱 배포, APK와 AAB file 졸리운_곰 2024.05.03 208
151 [Android SDK] [안드로이드] 접속된 네트워크 인터페이스의 IP 주소 가져오기 졸리운_곰 2024.05.02 191
150 [Android SDK] [안드로이드] 핸드폰 번호, 기기 고유 id 등 단말기 정보 가져오기 file 졸리운_곰 2024.05.02 451
149 [Android SDK] Android) 안드로이드 Jsoup로 웹크롤링 하기 (예제포함) - "데일리 브리핑 앱 개발기" file 졸리운_곰 2024.05.01 139
148 [Android SDK] [Android] Activity 생명주기와 이동 file 졸리운_곰 2024.05.01 182
147 [Android SDK] [Android] EditText 읽기 전용으로 만들기 졸리운_곰 2024.05.01 120
» [Android SDK] 안드로이드: 간단한 데이터를 저장하고 싶을 때(SharedPreferences 사용예제) 졸리운_곰 2024.05.01 145
145 [Android SDK] [Android] Jsoup 으로 파싱하기 file 졸리운_곰 2024.05.01 146
144 [Android SDK] [Android] 안드로이드 - 액티비티(Activity)로부터 결과 데이터 받아오기 file 졸리운_곰 2024.05.01 166
143 [Android SDK] [안드로이드/Android] 기기 네트워크 연결 상태 확인 file 졸리운_곰 2024.05.01 138
142 [Android SDK] 안드로이드 - 메시징 - Toast 졸리운_곰 2024.05.01 201
141 [Android SDK] [Android] 안드로이드 Alert 창 띄우기 file 졸리운_곰 2024.05.01 170
140 [Android SDK] 버튼을 클릭하면, 동작하는 코드를 작성하는 방법 졸리운_곰 2024.05.01 120
139 [Android SDK] [ Android ] a webview method was called on thread 'javabridge' 에러가 발생했을 때 졸리운_곰 2024.05.01 202
138 [Android SDK] [안드로이드] Thread, TimerTask, Handler 반복 호출 만들기 JAVA 졸리운_곰 2024.05.01 157
137 [Android SDK] [Android] postDelayed()를 이용해서 주기적 메소드 실행 졸리운_곰 2024.05.01 144
136 [Android SDK] Making Android WebView autorefresh periodically 졸리운_곰 2024.05.01 168
135 [Android SDK] [안드로이드] 시스템 멈추기 - Sleep() 사용법 file 졸리운_곰 2024.05.01 140
134 [Android SDK] 안드로이드 스레드 예제. 스레드로 고민해보기. (Android Thread UseCase) file 졸리운_곰 2024.05.01 143
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED