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 앱을 실행해놓은 후 startActivity를 했더니 사진과 같이 됐습니다. Youtube 앱을 실행했던 적이 없다면 새로운 Task와 함께 Activity가 실행됩니다.
참고 사이트
https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko
'Android' 카테고리의 다른 글
[Android] EditText가 아닌 다른 곳 클릭시 키보드 내리기 (0) | 2020.02.02 |
---|---|
[Android] Activity Stack, Task 확인하기 (0) | 2020.01.31 |
[Android] Android Dagger2 연습 중 떴던 오류 (0) | 2020.01.28 |
[Android] Translate Animation과 클릭 이벤트 (0) | 2019.12.23 |
[Android] Ripple Effect (눌렀을 때 변하는 Background) (0) | 2019.12.11 |