본문 바로가기

아옳옳의 코딩공부/아옳옳의 안드로이드스튜디오

2021-03-16 안드로이드 스튜디오( 태스크2)

반응형

어제는 태스크가 어떤 것인지 , 어떻게 사용하는지 등에 대해서 알아보았다 

 

오늘은 어제의 심화라고 보면 될 거 같다  

 

액티비티의 싱행모드  <ativity android:lanchMode = [ "standard"  | "singleTop" | "singleTesk" | "singleInstance ] 

standard : 우리가 늘상 상용하던것 ( 중복허용 ) 늘상 사용했던것 계속 만들어진다 디폴트 값이라 따로 설명x 

 

 

singleTop : 탑액티비티(맨위액티비티) 중복허용하지 않음  ★★(Top 액티비티만 사용 ) 

매니패스트에 작성하는 법 인텐트에 작성하기 2가지 방법이 있다 

 

위 그림을 보면 singleTop을 사용하게되면 pause에서 Resume으로 가는걸 볼수 있다 

그런데 이렇게 하게 되었을 경우 내가 나한테 보낸 정보들은 Create에 있기 때문에 정보를 전달 받을수가 없게 되는데 그때 정보를 전달 받기 위해서 onNewIntent를 사용하여 내가 받은 정보를 전달 받을수 있다. 

 

매니패스트에 사용 (무조건 고정이다 , 싱글탑 선택 불가능) 

매니패스트에 런처모드 작성

 이렇게 메소드오버라이딩을 해주면 

이렇게 로그가 나오고 태스크에 * Task{16095f0 #58 visible=true type=standard mode=fullscreen translucent=false A=10155:com.example.chap09 U=0 StackId=58 sz=3}  이렇게 사이즈가 3개인것도 확인 할수 있다 

 

그리고 플래그를 사용하여 할 수 도 있다 

 

요약하자면 매니패스트에 설정하여 실행할시 최상위 액티비티를 다시 실행할경우 중복생성 막음 

플래스 설정시 플래그 해놓은 액티비티가 최상위 일경우 NewItent(재사용) 호출  

 

 

singleTesk : 어떤 태스크도 중복된 액티비티를 허용하지 않음 (매니패스트에서 사용) 

singleTesk는 다시 A2를 호출하였을때 A3를 제거하고 호출하게 된다 (A2가 탑이 되어야 하기 떄문에 그전 액티비티를 제거 해버리는 것이다 ) 

 

그리고 B1(다른곳 ) 에서 A2를 호출하게 나의 태스크에 새롭게 A2를 만드는것이 아니라 A3를 제거하고 A2로 이동하여 실행한다 

 

여기도 singleTop 처럼 똑같이 사용해주고 onNewIntent로 데이터를 받아주고 사용하면 된다 그래서 나온것이 

* Task{d7188d5 #63 visible=true type=standard mode=fullscreen translucent=false A=10155:com.example.chap09 U=0 StackId=63 sz=2} 이것인데 사이즈가 2인걸 확인 할수 있다 . 

 

singleInstance : 어떤 태스크도 중복된 액티비티를 허용하지 않음 , 태스크내에 다른 액티비티를 허용하지 않음 

무조건 독립적으로 생성이 되고 다른곳에서 호출하더라도 나를 재사용하는 것이다! 

활용도가 낮아서 잘 사용 하지 않는다 ! 

(위랑 비슷해서 나머지 설명 생략 ) 

 


noHistory  (finish랑 비슷함)  (매니패스트에도 사용가능 플래그도 가능 ) 

화면을 넘어갈때 남은 액티비티는 종료를 하고 넘어간다 

FLAG_ACTIVITI_CLEAR_TASK  : 남은 태스크를 싹 비워버린다 

싹 지우고 하나만 남겨 놓는다 

 

FLAG_ACTIVITI_CLEAR_TOP 

A2를 재사용이아닌 A2도 제거후 재 생성한다  이것이 싱글테스크랑 다른점이다 

그러나 singleTesk 처럼 사용도 가능 하다 . FLAG_ACTIVITI_CLEAR_TOP 과 FLAG_ACTIVITI_SINGLE_TOP 같이 쓰게 되면

중복은 제거 하고 A2를 재사용 하는것과 같다 

A3에서 A2를 호출할때 A3는 FLAG_ACTIVITI_CLEAR_TOP로 제거 하고 A2도 제거할려고 하는데 FLAG_ACTIVITI_SINGLE_TOP만나 제거하지 않고 재사용함 

 

FLAG_ACTIVITI_CLEAR_REORDER_TO_FRONT (호출하던 액티비티를 이동하여 재사용 ) 

실행의 흐름이 꼬임  때문에 실행의 흐름이 복잡해질수 있다 ( 추천하지 않는다 ) 

 

finishOnCloseSystemDialogs ( 매니패스트에 작성) 

시스템 다이얼로그 나오면 종료됨 별로 안씀 그래서 설명도 없어 나중에 궁금하면 책 참조 

 

FLAG_ACTIVITI_TASK_ON_HOME ( 홈이 위로 올라옴 ) 

 

뒤로 가기 눌럿을때 앱이 다른 앱이나 액티비티가 아니라 홈화면이 올라오기 때문에 앱이 끝난거 같은 느낌을 줄 수 있다  b1에서빽 버튼 눌럿을때 A테스크로 돌아오면 앱이계속 진행되는 느낌을 주지만 이것을 사용하면 앱이 끝난 느낌을 준다 .

반응형