0. 실행 결과 화면
1. MainActivity.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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | package com.tistory.qlyh8.pracitice; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(getApplicationContext(), "onCreate() 호출됨: 1. 생성", Toast.LENGTH_SHORT).show(); 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(), "onnStart() 호출됨: 2. 시작", Toast.LENGTH_SHORT).show(); } @Override protected void onResume() { super.onResume(); Toast.makeText(getApplicationContext(), "onResume() 호출됨: 3. 다시시작", Toast.LENGTH_SHORT).show(); // 다시 시작할 때 데이터 가져오기 SharedPreferences sharedPreferences = getSharedPreferences("pref", Activity.MODE_PRIVATE); if(sharedPreferences != null){ String color = sharedPreferences.getString("color", ""); Toast.makeText(getApplicationContext(), "color: " + color, Toast.LENGTH_LONG).show(); } } @Override protected void onPause() { super.onPause(); Toast.makeText(getApplicationContext(), "onPause() 호출됨 : 4. 일시중지", Toast.LENGTH_SHORT).show(); // 중지될 때 데이터 저장 // MODE_PRIVATE : 자신의 어플리케이션 내에서만 사용한다. 기본값은 0 SharedPreferences sharedPreferences = getSharedPreferences("pref", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("color", "black"); editor.apply(); } @Override protected void onStop() { super.onStop(); Toast.makeText(getApplicationContext(), "onStop() 호출됨: 5. 중지", Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(getApplicationContext(), "onDestroy() 호출됨: 6. 소멸", Toast.LENGTH_SHORT).show(); } @Override protected void onRestart() { super.onRestart(); Toast.makeText(getApplicationContext(), "onRestart() 호출됨: 7. 다시시작", Toast.LENGTH_SHORT).show(); } } | cs |
SharedPreferences 이외에도 onSaveInstanceState 메소드와 onRestoreInstanceState 메소드를 사용할 수도 있다.
액티비티가 중지되기 전에 onSaveInstanceState 메소드가 호출되는데 이 안에서 임시로 데이터를 저장할 수 있다.
저장할 때는 Bundle 객체를 만들어 저장하는데,
이 Bundle 객체는 액티비티가 다시 만들어질 때 호출되는 onCreate나
화면에 다시 보일 때 호출되는 onRestoreInstanceState 메소드의 파라미터로 전달된다.
파라미터로 전달된 번들 객체의 데이터를 이용하면 화면에 원래의 데이터를 복구할 수 있다.
출처: https://www.edwith.org/boostcourse-android/lecture/17067/
'Android' 카테고리의 다른 글
Broadcast Receiver (브로드캐스트 수신자) (0) | 2018.05.26 |
---|---|
액티비티 구성요소 - 서비스 (Service) (0) | 2018.05.19 |
액티비티 수명주기 (Activity Lifecycle) - (1) (0) | 2018.05.19 |
부가데이터 (Extra) - Serializable & Parcelable (0) | 2018.05.19 |
애플리케이션 구성요소와 액티비티 전환 (2) (0) | 2018.05.19 |