IT_Programming/Android_Java

[펌] 동일 Task로 앱 실행하기

JJun ™ 2012. 10. 5. 22:23



출처: http://oic.tstore.co.kr/front/community/mentoring/viewMentoring.action?seq=101




[요약]


앱을 실행할 때 하나의 동일한 Task로 앱이 실행 시키고자 한다. 



[설명]

외부(리시버, 상태창, 알람메니저 등)에서 내 앱을 실행하려 할때 기존에 실행되고 있는 Task가 존재하면 기존 Task가 호출되고 이전에 실행된 적이 없으면 새로 실행하는 형태로 앱을 실행하고 할 때 다음 방식으로 앱을 호출하면 됩니다. 

아래와 같은 방식으로 앱을 호출하면 새로운 Task로 앱이 호출되지 않고 기존에 존재하는 Task가 노출됩니다.  이것은 이전에 앱이 실행되어서 여러단계의 액티비티가 실행된 상태라면 그 실행 상태 그대로 다시 노출 된다는 뜻입니다.
당연히 이전에 실행된 적이 없다면 main 액티비티부터 실행되어집니다.


[코드]

  
  ComponentName component = new ComponentName("your.app.main.packagename",
                                                           "your.app.main.packagename.mainactivity");

  Intent intent = new Intent("android.intent.action.MAIN");
  intent.addCategory("android.intent.category.LAUNCHER");
  intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
                         |Intent.FLAG_ACTIVITY_NEW_TASK);
//0x10100000);
  intent.setComponent(component);
  startActivity(intent);


또는 팬딩 인텐트로 처리할 경우

 
  PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
 



* 이 호출 방식은 menu에서 런처 아이콘을 클릭했을 때와 동일한 방식입니다.