[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

 

 

 


본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
33 [Android Studio] Google Play Console - 앱 API 수준 업데이트하기 (앱 업데이트 출시, 앱 API 수준 이상 타겟팅 방법, API 31 To 33) file 졸리운_곰 2024.08.28 203
32 [android studio] 안드로이드 앱 배포, APK와 AAB file 졸리운_곰 2024.05.03 208
31 [android studio] 안드로이드 스튜디오 패키지명 변경 방법 file 졸리운_곰 2024.01.28 130
30 [android studio] 안드로이드 앱 내부 배포 시 Play프로텍트에 인증받고 배포하기 file 졸리운_곰 2023.03.23 228
29 [android studio] [Java][Android] 안드로이드 다국어 지원 file 졸리운_곰 2023.03.21 137
28 [android studio] [안드로이드 스튜디오] 다국어 지원 strings.xml 파일 생성 방법 file 졸리운_곰 2023.03.21 220
27 [android studio] 구글 플레이 스토어 등록 어떻게? 2편 - 키스토어 생성과 릴리즈 빌드 하기 file 졸리운_곰 2023.03.21 148
26 [android studio] 구글 플레이 스토어 등록 어떻게? 1편 - 준비해야 할 것들 졸리운_곰 2023.03.21 136
25 [android studio] 웹페이지를 apk 앱으로 | 쉽게 따라하는 웹앱 만들기 file 졸리운_곰 2023.03.21 227
24 [android studio] 안드로이드 아이콘이 2개 생성될 때 졸리운_곰 2023.03.21 172
23 [android studio] Convert Any Website to Android App using Android Studio file 졸리운_곰 2023.03.18 199
22 [android studio] How to Convert Any Website to Android App in Android Studio? file 졸리운_곰 2023.03.18 144
21 [android studio] 에러 해결: android gradle plugin requires java 11 to run. you are currently using java 1.8. file 졸리운_곰 2022.11.17 141
20 [android sdk] 안드로이드에서 JWT 사용하기 졸리운_곰 2022.07.15 176
19 [Android Studio] Android Native App 에서 mysql , php 연결 : PHP MySQL REST API for Android file 졸리운_곰 2021.12.02 267
18 Android PHP MySQL 예제 - 데이터베이스에서 데이터를 JSON 형식으로 가져오기 file 졸리운_곰 2021.07.24 340
17 Android PHP MySQL 예제 - 데이터베이스 질의(query) 결과 출력하기 file 졸리운_곰 2021.07.24 679
16 [android] 안드로이드에서 mysql 데이터베이스 입력, 접속 / Android PHP MySQL 예제 - 데이터베이스에 데이터 입력하기 file 졸리운_곰 2021.07.24 236
15 Android 에서 Opencv 설치하고 간단한 예제 실행해보기!! file 졸리운_곰 2020.10.31 511
14 [Android] Fragment 를 이용한 탭 만들기 file 졸리운_곰 2020.09.19 219
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED