onCreate() -> onStart() -> onResume() 의 순서로 호출이 된다.
그런데 만약 어떤 액티비티에서 자기 자신을 호출하며, 약간의 값만 수정할 경우가 있을 수 있다.
이런 경우 일반 호출 방식으로 하게 되면, 액티비티 스택에는
동일한 액티비티가 중복되어 쌓일 것이다.
자기 자신을 호출하며, 갱신만 할 방법은 없을까?
onNewIntent란 놈이 있다.
이놈은 항상 실행되는 것이 아니고 일정 조건을 갖추었을 때, 자동 호출이 된다.
onNewIntent가 호출되는 조건은 두가지가 있다.
첫째로, 인텐트에 Activity Flag값을 주는것이다.
예)Intent intent = new Intent(Activity.this,Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
두번째 라인에 intent.addFlags(intent.FLAG_ACTIVITY_SINGLE_TOP)를 보자.
인텐트에 flag값을 주는 부분이다. FLAG_ACTIVITY_SINGLE_TOP 속성은
foreground 상태의 액티비티에서 자신을 호출 할 경우 자기 자신을 재활용 하는 속성값이다.
두번째로, Androidmanifest.xml 에서 속성을 주는 방법이다.
예)<activity android:name=".TestActivity" android:launchMode="singleTop">
</activity>
위 코드와 같이 매니페스트 파일에서 액티비티에 launchMode 의 속성을 singleTop으로
준다. singleTop 은 위에서 설명한 FLAG_ACTIVITY_SINGLE_TOP과 같은 속성이다.
댓글 없음:
댓글 쓰기