본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] TaskStackBuilder Tutorial

by 돼지왕 왕돼지 2013. 10. 27.
반응형


 android TaskStackBuilder Tutorial

 

[android] TaskStackBuilder Tutorial



API Level 11 이상에서는 ( 3.0 / HoneyComb ) back key 를 통한 navigation convention 이 바뀌었다.

back key 의 behavior 는 현재 task 에서의 조작만을 의미하고, 다른 task 로의 이동은 없다.

이전 task로의 inter task 이동은 "recents" 를 통해서 가능하다.


android 3.0 이후에서 한 task stack 에서 다른 task 로 이동하는 경우, 

어플리케이션은 back stack 과 history 를 융합시켜서 유저가 back 키 여러번 눌러 launcher 로 나갈 수 있게 해야 한다. back key 를 눌러서 다른 task 로 이동하면 안된다.


TaskStackBuilder 는 현재의 수정된 convention 을 거슬러 올라가 하위호환성을 가질 수 있게 하는데 쓰인다. 다시 말해 다른 task 로 갈 수 있도록 하는 것을 말한다.

3.0 버전 이상에서는 startActivities() 나 PendingIntent 가 앞서 표현한것과 같이 융합시킨다.




예제 코드


<Example Code>

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);  

stackBuilder.addParentStack( NotifiResultActivity.class );

stackBuilder.addNextIntent( new Intent( getApplicationContext(), NotifiResultActivity.class ) );

stackBuilder.addNextIntent( new Intent( getApplicationContext(), NotifiResultActivity2.class) );  

stackBuilder.addNextIntent( new Intent( getApplicationContext(), NotifiResultActivity2.class) );

stackBuilder.startActivities();


TaskStackBuilder 를 사용하기 위해서는 반드시 manifest 에 부모 activity 도 명시해주어야 한다.







<xml>

<activity

    android:name=".MainActivity"

    android:label="@string/app_name" >

    <intent-filter>

        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />

    </intent-filter>

</activity>


<activity android:name=".NotifiResultActivity" >

     <meta-data

        android:name="android.support.PARENT_ACTIVITY"

        android:value=".MainActivity" />

</activity>

<activity android:name=".NotifiResultActivity2" >

     <meta-data

        android:name="android.support.PARENT_ACTIVITY"

        android:value=".NotifiResultActivity" />

</activity>


MainActivity -> NotifiResultActivity -> NotifiResultActivity2 -> NotifiResultActivity2


addParentStack 은 startActivity() 를 부르는 Activity 를 parent 로 가진 Activity로 설정하여 call 해야 한다.

( 테스트를 다시 해봐야 할듯.. ㅠ )


API 16 이상에서는 meta-data tag 를 사용한 코드가 아래의 tag로 대체 가능하다.

<activity android:name=".NotifiResultActivity"

            android:parentActivityName=".MainActivity"/> 



반응형

댓글