2015년 4월 27일 월요일

Android: onNewIntent

안드로이드는 일반적으로 액티비티에서 액티비티를 호출 할 경우,

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과 같은 속성이다.


댓글 없음:

댓글 쓰기