'FLAG_ACTIVITY_SINGLE_TOP'에 해당되는 글 1건

  1. 2013.04.18 [android] FLAG_ACTIVITY_SINGLE_TOP으로 activity 실행시 intent 받아 처리하기

[android] FLAG_ACTIVITY_SINGLE_TOP으로 activity 실행시 intent 받아 처리하기

android 2013. 4. 18. 10:21

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

startActivity를 호출하여 전달할 값을 putExtra()를 호출하여 intent에 설정하고, 호출된 Activity에서 getIntent()intent를 얻어 왔는데 이상하게 넘겨준값이 없다.  한참 고민하다가 발견한 것은 startActivity로 넘겨주는 intent  FLAG_ACTIVITY_SINGLE_TOP을 설정한 점이다.

 

Intent intent = new Intent(context, SomeActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

            

intent.putExtra(PARAM_1, value1);

intent.putExtra(PARAM_2, value1);

intent.putExtra(PARAM_3, value1);

 

            

context.startActivity(intent);

 

FLAG_ACTIVITY_SINGLE_TOP Activity를 재사용 하기 위해서 설정한것이고 필요없는 Activity를 재거하기 위해서 FLAG_ACTIVITY_CLEAR_TOP 을 같이 조합하였다.

 

이런경우 SomeActivity에서는 onNewIntent() override 해서 intent를 받아야 한다.

그리고 setIntent()를 호출해서 다음에 ( onResume 같은데서 ) getIntentintent를 다시 참조해야 할 경우를 위해서 대비하는 것이 좋다.

 

@Override

protected void onNewIntent(Intent intent) {

       super.onNewIntent(intent);

 

       if (null != intent) {

             int defaultValue = 0;

              index = intent.getIntExtra(PARAM_1, defaultValue);

            

             setIntent(intent); 

}

}

 

호출되는 순서는 onCreate() 대신에 onNewIntent()가 호출되고 다음으로 onResume() 이 호출된다 

처음 startActivity 호출시

1.     onCreate

2.     onStart

3.     onResume

해당 Activity가 실행된 상태에서  flas를 추가하고 다시 startActivity 호출시

1.     onNewIntent

2.     onResume

 

 

 

 



: