나만의 개발노트

[안드로이드] 수명주기/생명주기 (LifeCycle), getSharedPreferences() 본문

[안드로이드]/[안드로이드] 공부 기록

[안드로이드] 수명주기/생명주기 (LifeCycle), getSharedPreferences()

노트포미 2023. 10. 13. 03:40

생명주기(=수명주기)

액티비티는 시스템에 의해 정지, 종료될 수 있음

<=> 액티비티의 생명주기가 있음

 

- 생명주기 메소드는 자동으로 호출된다

[생명주기 대표 메소드] 

- onCreate()

- onStart()

- onResume()

- onPause()

- onStop()

- onDestroy()

 

-> 각 메소드에 원하는 코드를 작성하면 됨

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[사용법 - SharedPreferences 사용]

 1. onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()를 오버라이드 한다

2. onCreate()에서는 버튼을 누르면 액티비티 종료하게 코드 작성

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

3. onPause()가 실행될 때, SharedPreferences를 이용해서 정보를 저장함

@Override
protected void onPause() {
    super.onPause();

    Toast.makeText(getApplicationContext(),"onPause() 호출됨",Toast.LENGTH_SHORT).show();

    //액티비티를 정지할 때, 정보를 저장하는 SharedPreferences
    SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = pref.edit();
    editor.putString("name","김철수");
    editor.commit();
}

4. onResume()이 실행될 때, SharedPreferences의 정보를 가져옴

@Override
protected void onResume() {
    super.onResume();

    Toast.makeText(getApplicationContext(),"onResume() 호출됨",Toast.LENGTH_SHORT).show();

    SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
    if(pref != null){
        //첫 인자 : 키값, 두번째 인자 : 만약 빈칸인 경우 출력할 문자열
        String name = pref.getString("name","");
        Toast.makeText(getApplicationContext(),"name : "+name,Toast.LENGTH_LONG).show();
    }
}

#전체 MainActivity.java

package com.example.mylifecycle;

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.Toast;

public class MainActivity extends AppCompatActivity {

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

        Toast.makeText(getApplicationContext(),"onCreate() 호출됨",Toast.LENGTH_SHORT).show();

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

    }

    @Override
    protected void onStart() {
        super.onStart();
        Toast.makeText(getApplicationContext(),"onStart() 호출됨",Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onResume() {
        super.onResume();

        Toast.makeText(getApplicationContext(),"onResume() 호출됨",Toast.LENGTH_SHORT).show();

        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        if(pref != null){
            //첫 인자 : 키값, 두번째 인자 : 만약 빈칸인 경우 출력할 문자열
            String name = pref.getString("name","");
            Toast.makeText(getApplicationContext(),"name : "+name,Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();

        Toast.makeText(getApplicationContext(),"onPause() 호출됨",Toast.LENGTH_SHORT).show();

        //액티비티를 정지할 때, 정보를 저장하는 SharedPreferences
        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.putString("name","김철수");
        editor.commit();
    }

    @Override
    protected void onStop() {
        super.onStop();
        Toast.makeText(getApplicationContext(),"onStop() 호출됨",Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Toast.makeText(getApplicationContext(),"onDestroy() 호출됨",Toast.LENGTH_SHORT).show();
    }
}

#실행 영상

LifeCycle 실행영상.mp4
0.45MB


[참조]

https://www.boostcourse.org/mo316/lecture/259027?isDesc=false 

 

안드로이드 앱 프로그래밍

부스트코스 무료 강의

www.boostcourse.org