** 공홈 번역

http://developer.android.com/guide/components/fragments.html#Design



Creating a Fragment




** 프래그먼트 만들기


프래그먼트를 만들기 위해서는 일단 Fragment 의 서브클래스를 만들자(또는 이미 만들어 놓은 것 써도 된다). Fragment 클래스는 Activity 와 비슷하게 보이는 코드를 가지고 있다. 그것은 activity 와 비슷하게 콜백 메서드들을 포함한다(예를들어, onCreate(), onStart(), onPause(), onStop()). 사실, 존재하는 안드로이드 애플리케이션을 fragment 를 쓰는 걸로 바꾼다면, activity 의 콜백 메서드 안에 있는 코드들을 간단하게 fragment 의 적절한 콜백 메서드 안으로 옮기면 된다.


보통, onCreate(), onCreateView() 정도는 구현해야 한다.


onCreate() : fragment 를 만들 때 호출된다. 구현 코드 안에서, fragment 가 paused 또는 stopped, resumed 될 때 얻고 싶은 fragment 의 중요한 컴포넌트 들을 초기화 해줘야한다.


onCreateView() : fragment 가 처음으로 유저 인터페이스를 그리는 시간에 호출된다. fragment 를 위해 UI 를 그릴 때, fragment 레이아웃의 root 가 되는 View 를 이 메서드에서 꼭 리턴해줘야 한다. 만약 fragment 가 UI 를 제공하지 않으면 null을 리턴할 수도 있다.


onPause() : 유저가 fragment 를 떠날 때, 첫번째 indication 으로써 이 메서드를 부른다(이것은 항상 fragment 가 destroyed 되는것을 의미하지는 않는다). 이곳은 보통, 현재 유저 세션을 넘어서 유지되어야 하는 어떤 변화를 커밋 하는 곳이다(왜냐하면 유저가 돌아오지 않을 수도 있기 때문에).


대부분의 애플리케이션들은 적어도 이 세개의 메서드들은 모든 fragment 마다 구현해줘야 한다. 그러나! fragment 라이프 사이클의 다양한 단계를 다루기 위해서 다뤄야하는 몇몇 다른 콜백 메서들도 있다. 모든 라이프사이클 콜백 메서드들은 http://developer.android.com/guide/components/fragments.html#Lifecycle 여기서 더 자세히 볼 수 있다.



** 또한, fragment 클래스를 기본으로 하는 것 대신에 상속받을 수 있는 다른 sub class 들도 있다.


DialogFragment


ListFragment


PreferenceFragment



저작자 표시 비영리 변경 금지
신고

'안드로이드 > 공부' 카테고리의 다른 글

[안드로이드] Fragment_3  (0) 2015.06.05
[안드로이드] Fragment_1  (0) 2015.06.05
안드로이드 외부경로  (0) 2015.04.02
by baeflower 2015.06.05 17:10

*** 공홈 번역!

http://developer.android.com/guide/components/fragments.html#Design



Fragment


** Fragment 란?

activity 안에서 사용자 인터페이스의 한 부분 또는 동작

하나의 activity 안에 여러개의 fragment 를 합칠 수 있고 여러개의 activity 에서 동일한 fragment 를 재사용할 수 도 있다.

자신만의 라이프 사이클을 가지는 activity 의 모듈러 섹션처럼 생각해도 되며, 자신만의 input 이벤트를 받고 activity 가 사용중인 동안에 input 이벤트들을 추가하거나 제거할 수도 있다 (다른 activity 들에서 다시 사용할 수 있는 서브 activity 의 종류 같은?!) 


fragment 는 항상 어떠한 activity 안에 들어가 있어야 하며, 주인 activity 의 라이프 사이클은 fragment 라이프 사이클에 직접적으로 영향을 준다. 예를 들어, activity 가 멈추면(pause) 그 안에 있는 모든 fragment 들도 멈추고, activity 가 없어지면(destroy) 그 안에 모든 fragment 들도 없어진다. 그러나 activity 가 살아있는 도중에는 (running, resume 상태) 각각의 fragment 들을 독립적으로 수정할 수 있다.(걔네를 추가 또는 삭제하는 등)

Fragment transaction 을 수행하면, 해당하는 activity 에 의해 관리되는 back stack 에 그 fragment 를 추가할 수 있다(back stack - 뒤로가기 stack). activity 안에 각각의 back stack 엔트리는 fragment transaction 이 수행 되었던 기록이다. 그 back stack 은 사용자들이 fragment transaction (navigation backwards?) 을 뒤로 돌아갈 수 있게 해준다. 어떻게? Back button 을 눌렀을 때! - 


activity 레이아웃에 fragment 를 추가할 때, 그 activity 의 view 계층 안에 ViewGroup 이 하나 생기고, 그 fragment 는 그 자신의 view 레이아웃을 정의한다. (activity 안에 ViewGroup 안에 fragment 를 추가한다는 말인듯?). activity 의 레이아웃 파일 안에 fragment 를 선언함으로서 activity 레이아웃 안에 <fragment> 요소를 넣을 수 있다. 또는 application 코드로부터 존재하는 ViewGroup 에 fragment 를 추가할 수 있다. (레이아웃에서도 넣을 수 있고 자바에서도 넣을 수 있다는 말인데 이렇게 길게..). 그러나, fragment 가 반드시 activity 레이아웃의 한 부분이 되야 하는 것은 아니다. 그 자신의 UI 없이 activity 의 보이지 않는 worker 로서 fragment 를 사용할 수도 있다(fragment 가 꼭보이는 레이아웃이 없더라도 activity 의 보이지 않는 일꾼으로서 작동할 수도 있다는 말인듯).



 


 



저작자 표시 비영리 변경 금지
신고

'안드로이드 > 공부' 카테고리의 다른 글

[안드로이드] Fragment_3  (0) 2015.06.05
[안드로이드] Fragment_1  (0) 2015.06.05
안드로이드 외부경로  (0) 2015.04.02
by baeflower 2015.06.05 16:44

Service


안드로이드의 Service는 startService 또는 bindService로 Service를 시작할 수 있다

bindService 시 flag를 어떤 것을 사용하는지 어디서 startService가 시작되는지에 따라 다양한 경우가 발생한다


이중 stopService 실행 시 onDestory()를 바로 타게 하고 싶으면 bindService에서 사용하는 flag를 변경하면 된다


기존에 bindService에서 썼던 flag는 Context.BIND_AUTO_CREATE 였는데 이것을 Context.BIND_ADJUST_WITH_ACTIVITY 로 수정했다

그랬더니 잘 작동한다!


BIND_ABOVE_CLIENT : 서비스에 바인딩된 client application이 app 자체보다 바인딩한 service가 더 중요하다고 하는 것. 이게 세팅되면, 플랫폼은 연결된 서비스를 kill 하기 전에 out of memory killer가 앱을 먼저 kill 하도록 시도할 것이다. 


BIND_ADJUST_WITH_ACTIVITY : activity로부터 서비스가 바인딩되면, 타겟 서비스의 프로세스 중요성이 유저에게 보이는 액티비티가 보이는지 안보이는지에 기반하여 올라갈 것이다. 다른 플래그가 클라이언트 프로세스의 전체적인 중요성이 프로레스에 영향을 미치는 양을 줄이려고 하더라도(?)


BIND_ALLOW_OOM_MANAGEMENT : 


BIND_AUTO_CREATE :



... 

여기서 더 많은 flag에 대한 설명을 볼 수 있다!


http://developer.android.com/reference/android/content/Context.html  



저작자 표시 비영리 변경 금지
신고
by baeflower 2015.05.15 10:43
| 1 2 |