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 실행");
}
}
'Android' 카테고리의 다른 글
SharedPreferences 사용하여 회원가입 app 만들기 (0) | 2024.06.07 |
---|---|
두 번째 순서의 인텐트(intent)부터 보여질 때 해결 방법 (0) | 2024.06.07 |
안드로이드 스튜디오 동일한 어플리케이션(application)이 여러 개 생성되었을 때 해결 방법 (0) | 2024.06.07 |
안드로이드 스튜디오 알람 app 개발 (0) | 2024.06.07 |
안드로이드 스튜디오에 음악, 비디오 리소스 파일 넣는 방법 (0) | 2024.06.05 |