728x90
https://www.youtube.com/watch?v=gYacRFMEPjk&list=PLC51MBz7PMyyyR2l4gGBMFMMUfYmBkZxm&index=46

OnCreate : 생성되다. Activity가 태어날 때 어떤 행동들을 해줄 것이냐?
setContentView(R.layout.activity_main);
activity_main.xml 파일과 연결
SubActivity라는 반투명 액티비티 생성
package com.example.lifecycleexample;
import android.app.Activity;
import android.os.Bundle;
//subActiivty- 반투명 액티비티
public class SubActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
}
}
extends 뒤에 구문을 AppCompatActivity가 아닌 그냥 Activity로 바꿔주었다.
manifest로 가서
<activity
android:name=".SubActivity"
android:theme="@android:style/Theme.Translucent"
android:exported="false" />
<activity
최종 코드
activity_main.xml
<?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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_move"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼"/>
</LinearLayout>
MainActivity.java
package com.example.lifecycleexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 액티비티 또는 프레그먼트가 생성이 되었을 때 이곳 내부구문들을 실행
Log.e("onCreate", "ENTER");
}
@Override
protected void onStart() {
super.onStart();
Log.e("onStart", "ENTER");
findViewById(R.id.btn_move).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// main -> sub
startActivity(new Intent(MainActivity.this,SubActivity.class));
}
});
}
@Override
protected void onResume()
{
super.onResume();
// 중지 되어있던 액티비티가 다시 재개(재 실행) 되는 시점에서 이곳 내부구문들을 실행
Log.e("onResume", "ENTER");
}
@Override
protected void onPause() {
super.onPause();
// 중지 상태(홈 버튼을 눌러서 바깥으로 잠깐 빠져나갔을 때, 다른 액티비티가 활성화 되어있을 때) 일 때 이곳 내부구문들을 실행
Log.e("onPause", "ENTER");
}
@Override
protected void onStop() {
super.onStop();
Log.e("onStop", "ENTER");
}
@Override
protected void onDestroy() {
super.onDestroy();
// 화면이 파괴되어서 소멸했을 때의 시점 일 때 이곳 내부구문들을 실행
Log.e("onDestroy", "ENTER");
}
@Override
protected void onRestart() {
super.onRestart();
Log.e("onRestart", "ENTER");
}
}
꼭 재시작이 아닌 실행이 되고 기본 상태에서도 onResume이 실행된다.
activity_sub.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".SubActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
SubActivity.java
package com.example.lifecycleexample;
import android.app.Activity;
import android.os.Bundle;
//subActiivty- 반투명 액티비티
public class SubActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
}
}
B
A 가 이렇게 스택 구조로 만들어져있다 하면
B가 실행되고 소멸되면 A에서 onResume이 실행된다.
onPause는 다른 액티비티로 전환될 때
onStop은 기존 액티비티가 아예 안 보일 때 ( ex) 음악 재생 끄거나 토스트 걸어주기 가능)
onResume ( ex) 음악 재생 다시 하기)
728x90
'[Android Studio] (Java)' 카테고리의 다른 글
| [Android Studio] Room Database (앱 내부 데이터베이스) (0) | 2023.09.03 |
|---|---|
| [Android Studio] RegisterForActivityResult (0) | 2023.09.03 |
| [Android Studio] View Binding (뷰 바인딩) (0) | 2023.09.03 |
| [Android Studio] Frame Layout (뷰 끼리 겹치기) (0) | 2023.09.03 |
| [Android Studio] Fragment 간 데이터 전송 (1) | 2023.09.03 |