728x90
반응형
안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️ 입니다.
오늘은 onNewIntent 에 대해 알아보도록 하겠습니다.
1. 개요
onNewIntent() 란,
AndroidManifest.xml 에서 선언한 Activity의 launchMode를 singleTop 으로 설정하거나,
FLAG_ACTIVITY_SINGLE_TOP 플래그를 썻을 경우,
Activity 스택의 최상위 Activity 가 새로운 인텐트를 통해 재시작 될 때 호출되는 메서드입니다.
이 메서드가 사용되는 이유는 아래와 같이 설명이 가능하다.
- 인텐트 업데이트
- 실행 중이던 Activity 가 새 인텐트로 재시작 될 때, 이 새로운 인텐트에 포함된 데이터를 처리하기 위해 사용
- Activity 상태 유지
- singleTop 또는 singleTask 로 luanchMode가 설정된 경우, 해당 Activity가 최상단에 있을 때 새 인탠트로 재시작되는 경우 기존 액티비티 인스턴스를 재사용한다.
2. 사용법
- MainAcitivty 와 TestActivity 를 생성한다
- TestActivity는 launchMode가 singleTop 으로 설정
- MainActivity 의 New Intent 버튼 클릭 시, 새로운 인탠트를 생성하여 TestActivity 호출
- TestActivity 의 new intent2 버튼 클릭 시, 새로운 인탠트를 생성하고 데이터를 넣어 TestActivity 재호출
- 해당 작업에서 onNewIntent() 메서드 호출
- AndroidManifest.xml 에서 launchMode 설정
// MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onButtonClicked(View v) {
Intent intent = new Intent(this, TestActivity.class); // 인탠트 생성
startActivity(intent);
}
}
- 새로운 인탠트를 생성하여 TestActivity 를 호출한다.
// TestActivity
public class TestActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Log.d(this.getClass().getName(), "onCreate 실행");
}
public void onButton2Clicked(View v) {
Intent intent = new Intent(this, TestActivity.class); // 인탠트 생성
intent.putExtra("test", 10); // 데이터 포함
startActivity(intent);
}
@Override
protected void onResume() {
super.onResume();
Log.d(this.getClass().getName(), "onResume 실행");
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.d(this.getClass().getName(), "onNewIntent 실행");
}
}
- 새로운 인탠트 생성 후, 데이터를 추가 ( putExtra ) 하여 TestActivity 를 재호출한다.
- singleTop 으로 설정되어 있기 때문에 onNewIntent() 메서드가 호출된다.
감사합니다.
참고
728x90
반응형
'AOS 🤖 > Java' 카테고리의 다른 글
[AOS-Java] onActivityResult 개념 및 사용법 (2) | 2024.03.05 |
---|