본문 바로가기

Android

[Android] Task와 Task Affinity에 대한 나의 이해

Task란?

 Application에서 실행된 Activity들을 담아두는 상자라고 이해했습니다. 차곡차곡 쌓이는 스택의 모습을 하고 있습니다.

 Task마다 이름이 있는데, 별 다른 설정을 안 했을 시 App의 Package이름을 그대로 따라갑니다.

Task Affinity란?

<activity
    android:taskAffinity="string"/>

 Activity가 선호하는 Task의 이름이라고 이해를 했습니다. startActivity를 통해 Activity가 생성되었을 때 ~한 이름을 가진 Task에 올라가고 싶다는거죠.

 

<application
    android:taskAffinity="string"/>

 activity 태그가 아닌 application 태그에 taskAffinity 속성을 추가한다면, Application이 실행되었을 때 생성되는 Task의 이름을 정할 수 있습니다.

 

밑에는 실험 해봤던 코드들입니다.

AndroidManifest.xml

...
    <!-- 새롭게 시작할 Activity입니다 -->
    <!-- TaskAffinity는 유튜브의 Task로 해보았습니다 -->
    <activity android:name=".TaskActivity"
         android:taskAffinity="com.google.android.youtube"/>
...

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private Button mBtnTemp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBtnTemp = findViewById(R.id.btn_temp);
        mBtnTemp.setOnClickListener(v -> {
            Intent intent = new Intent(this, TaskActivity.class);
            // Flag 중요!
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        });
    }
}

Youtube Task에 내 Activity가 올라간 모습

Youtube 앱을 실행해놓은 후 startActivity를 했더니 사진과 같이 됐습니다. Youtube 앱을 실행했던 적이 없다면 새로운 Task와 함께 Activity가 실행됩니다.

 

참고 사이트

https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko

 

작업 및 백 스택 이해  |  Android 개발자  |  Android Developers

일반적으로 앱에는 여러 활동이 포함됩니다. 각 활동은 사용자가 실행할 수 있는 특정 종류의 작업을 중심으로 설계되어야 하며 다른 활동을 시작할 수 있어야 합니다. 예를 들어 이메일 앱에는 새 메시지 목록을 표시하는 활동이 하나 있을 수 있습니다…

developer.android.com

https://parkho79.tistory.com/42

 

Task (2) - taskAffinity

taskAffinity? taskAffinity 를 설명하기 전에 task 에 대한 개념을 정확히 이해해야 한다. [Android] - Task (1) Task 에 대한 개념을 이해했다면 taskAffinity 는 아래와 같이 설명할 수 있다. ◼ Activity 실행..

parkho79.tistory.com