https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko
ํ๋ ์๋ช ์ฃผ๊ธฐ | Android Developers
ํ๋์ ์ฌ์ฉ์๊ฐ ์ ํ ๊ฑธ๊ธฐ, ์ฌ์ง ์ฐ๊ธฐ, ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ ๋๋ ์ง๋ ๋ณด๊ธฐ์ ๊ฐ์ ์์ ์ ํ๊ธฐ ์ํด ์ํธ์์ฉํ ์ ์๋ ํ๋ฉด์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์์์ ๋๋ค. ๊ฐ ํ๋์๋ ์ฌ์ฉ์ ์ธํฐํ
developer.android.com
์ธํ ํธ(Intent)์ ์ฉ๋
1. ์กํฐ๋นํฐ(Activity) ์์: ํ ์กํฐ๋นํฐ์์ ๋ค๋ฅธ ์กํฐ๋นํฐ๋ฅผ ์์ํ ๋ ์ฌ์ฉ
2. ์๋น์ค(Service) ์์: ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ์ ์ํํ๋ ์๋น์ค ์ปดํฌ๋ํธ๋ฅผ ์์ํ ๋ ์ฌ์ฉ
3. ๋ธ๋ก๋์บ์คํธ ์์ (BroadcastReceiver): ์์คํ ๋๋ ๋ค๋ฅธ ์ฑ์์ ๋ฐ์ํ๋ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๋ฅผ ์์ ํ ๋ ์ฌ์ฉ
package com.yujinoh.lifecycle;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
public class MainActivity extends AppCompatActivity {
// ๋ฉค๋ฒ๋ณ์
Button button;
TextView textView;
EditText editName;
EditText editAge;
TextView txtAge;
// **์ค์** ๋ด๊ฐ ์คํํ ์กํฐ๋นํฐ๋ก๋ถํฐ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ณ ์ถ์ ๋ ๋ฉค๋ฒ๋ณ์, ๊ฐ์ฒด ์์ฑ
ActivityResultLauncher<Intent> launcher =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult o) {
Log.i("LIFE MAIN", "onActivityResult ์คํ");
//๋ด๊ฐ ์คํํ ์กํฐ๋นํฐ๋ก๋ถํฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ถ๋ถ ์ฝ๋
if (o.getResultCode() == 1000){
Log.i("LIFE MAIN", "second Activity๋ก๋ถํฐ ๋ฐ์ดํฐ ๋ฐ๋ ๋ถ๋ถ");
int age = o.getData().getIntExtra("age", 0);
txtAge.setText("10๋
ํ ๋์ด๋ " + age + "์ด");
}
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("LIFE MAIN", "onCreate ์คํ");
button = findViewById(R.id.button);
textView = findViewById(R.id.textView);
editName = findViewById(R.id.editName);
editAge = findViewById(R.id.editAge);
txtAge = findViewById(R.id.txtAge);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editName.getText().toString().trim();
String strAge = editAge.getText().toString().trim();
int IntAge = Integer.parseInt(strAge);
// ๋ค๋ฅธ ์กํฐ๋นํฐ๋ฅผ ์คํ์ํค๋ ์ฝ๋
// ์ธํ
ํธ๋ฅผ ๋ง๋ ๋ค
// ์ธํ
ํธ๋ ์ด๋ค ์กํฐ๋นํฐ๊ฐ ์ด๋ค ์กํฐ๋นํฐ๋ฅผ ๋์ฐ๊ฒ ๋ค๋ผ๋ ์๋
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//์กํฐ๋นํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
intent.putExtra("name", name);
intent.putExtra("age", IntAge);
// startActivity(intent);
launcher.launch(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.i("LIFE MAIN", "onStart ์คํ");
}
@Override
protected void onResume() {
super.onResume();
Log.i("LIFE MAIN", "onResume ์คํ");
}
@Override
protected void onPause() {
super.onPause();
Log.i("LIFE MAIN", "onPause ์คํ");
textView.setText("Hello~~~");
}
@Override
protected void onStop() {
super.onStop();
Log.i("LIFE MAIN", "onStop ์คํ");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("LIFE MAIN", "onDestroy ์คํ");
}
}
package com.yujinoh.lifecycle;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import androidx.activity.OnBackPressedCallback;
public class SecondActivity extends AppCompatActivity {
TextView txtName;
TextView txtAge;
int age;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.i("LIFE MAIN", "๋๋ฒ์งธ ์กํฐ๋นํฐ onCreate ์คํ");
// ๋ฐ์ดํฐ๊ฐ ๋์ด์จ๊ฒ ์์ผ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ค.
String name = getIntent().getStringExtra("name");
age = getIntent().getIntExtra("age", 0);
age = age + 10;
txtName = findViewById(R.id.txtName);
txtAge = findViewById(R.id.txtAge);
txtName.setText("์ด๋ฆ์ " + name);
txtAge.setText("10๋
ํ ๋์ด๋ " + age + "์ธ");
// ๋ฐฑ(back) ๋ฒํผ ๋๋ ์ ๋ ๋์ํ๋ ์ฝ๋ ์์ฑ
getOnBackPressedDispatcher().addCallback(new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// ๋ฉ์ธ์กํฐ๋นํฐ์ ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ
Intent intent = new Intent();
intent.putExtra("age" , age);
setResult(1000, intent);
finish();
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.i("LIFE MAIN", "๋๋ฒ์งธ ์กํฐ๋นํฐ onStart ์คํ");
}
@Override
protected void onResume() {
super.onResume();
Log.i("LIFE MAIN", "๋๋ฒ์งธ ์กํฐ๋นํฐ onResume ์คํ");
}
@Override
protected void onPause() {
super.onPause();
Log.i("LIFE MAIN", "๋๋ฒ์งธ ์กํฐ๋นํฐ onPause ์คํ");
}
@Override
protected void onStop() {
super.onStop();
Log.i("LIFE MAIN", "๋๋ฒ์งธ ์กํฐ๋นํฐ onStop ์คํ");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("LIFE MAIN", "๋๋ฒ์งธ ์กํฐ๋นํฐ onDestroy ์คํ");
}
}