Search Results
Search Results for '안드로이드' : 19 POSTS
- 2010.08.19 태스크란? (Task, Activity Stack)
- 2010.08.13 액티비티 생명주기 (Activity LifeCycle) 1
- 2010.08.13 액티비티란? (Activity)
- 2010.08.13 안드로이드 어플리케이션 (Android Application)
- 2010.08.08 화면 회전시 리로드하지 않고 내용 유지하기 (Orientation Change Keep Content) 5
태스크란? (Task, Activity Stack)
- Posted at 2010. 8. 19. 02:52
- Posted by 루지메이앙
- Filed under 안드로이드/이론정리
');
}
//-->
|
');
}
//-->
|
안드로이드 태스크란? (Android Task, Activity Stack)
- Task는 어플리케이션에서 실행되는 액티비티를 보관하고 관리하며 Stack형태의 연속된 Activity로 이루어진다
- 선입후출(First In Last Out)형태로 나중에 적재된 액티비티일 수록 가장 먼저 사용된다
만약 1페이지>2페이지>3페이지 순으로 액티비티를 이동했을때 실행순서대로 Task에 push해 놓았다가
back버튼을 누르면 3페이지>2페이지>1페이지순으로 Task에서 pop시켜 되돌아 간다고 생각하면 된다
- 서로 다른 어플리케이션간의 이동에도 Task를 이용해 사용자 경험(UX)를 유지시켜 준다
- 최초적재 액티비티는 Root Activity 라고 하며 어플리케이션 런처로부터 시작된다
- 마지막으로 적재되는 액티비티는 Top Activity 라고 하며 현재 화면에 활성화 되어있는 액티비티를 말한다
- Task내에는 서로 다른 어플리케이션의 액티비티들이 포함될 수 있어 어플리케이션에 경계없이
하나의 어플리케이션인것 처럼 보이게 해준다
- Task의 Stack내에 존재하는 액티비티들은 모두 묶여서 background와 foreground로 함께 이동한다
홈버튼 클릭(task interrupt => background 이동), 홈버튼 롱클릭(recent task => foreground 이동)
- Flag를 사용하여 Task내 액티비티의 흐름을 제어할 수 있다
- Task는 어플리케이션에서 실행되는 액티비티를 보관하고 관리하며 Stack형태의 연속된 Activity로 이루어진다
- 선입후출(First In Last Out)형태로 나중에 적재된 액티비티일 수록 가장 먼저 사용된다
만약 1페이지>2페이지>3페이지 순으로 액티비티를 이동했을때 실행순서대로 Task에 push해 놓았다가
back버튼을 누르면 3페이지>2페이지>1페이지순으로 Task에서 pop시켜 되돌아 간다고 생각하면 된다
- 서로 다른 어플리케이션간의 이동에도 Task를 이용해 사용자 경험(UX)를 유지시켜 준다
- 최초적재 액티비티는 Root Activity 라고 하며 어플리케이션 런처로부터 시작된다
- 마지막으로 적재되는 액티비티는 Top Activity 라고 하며 현재 화면에 활성화 되어있는 액티비티를 말한다
- Task내에는 서로 다른 어플리케이션의 액티비티들이 포함될 수 있어 어플리케이션에 경계없이
하나의 어플리케이션인것 처럼 보이게 해준다
- Task의 Stack내에 존재하는 액티비티들은 모두 묶여서 background와 foreground로 함께 이동한다
홈버튼 클릭(task interrupt => background 이동), 홈버튼 롱클릭(recent task => foreground 이동)
- Flag를 사용하여 Task내 액티비티의 흐름을 제어할 수 있다
어피니티란? (Android Affinity)
- 어플리케이션 내의 액티비티들은 하나의 어피니티를(affinity:친화력) 가지고 있다
- AndroidManifest 에서 <activity> 요소의 taskAffinity 속성을 사용해 개별 affinity가 지정 가능하다
- FLAG_ACTIVITY_NEW_TASK 플래그를 가진 인텐트 객체로 부터 호출된 allowTaskReparenting 속성을
True로 가지고 있는 액티비티에 한해 affinity가 동작한다
- 위 조건이 만족한 상황에서 시작된 액티비티는 자신과 동일한 어피니티를 갖는 태스크가 있을경우
해당 태스크로 이동한다
- 즉, [b]어피니티를 가진 A액티비티가 호출되어 해당 태스크에 속해있을때 [b]어피니티를 가진 태스크가
호출되면 A액티비티는 [b]어피니티를 가진 태스크로 이동한다
- 어피니티에 의해 태스크가 이동된 후에 back버튼으로 반환시 원래 해당하던 태스크로 돌아간다
- 하나의 어플리케이션내에서 하나 이상의 기능을 갖는 어플리케이션이 존재할경우 각 액티비티별로 다른
어피니티를 지정해 관리할 수 있다
- 어플리케이션 내의 액티비티들은 하나의 어피니티를(affinity:친화력) 가지고 있다
- AndroidManifest 에서 <activity> 요소의 taskAffinity 속성을 사용해 개별 affinity가 지정 가능하다
- FLAG_ACTIVITY_NEW_TASK 플래그를 가진 인텐트 객체로 부터 호출된 allowTaskReparenting 속성을
True로 가지고 있는 액티비티에 한해 affinity가 동작한다
- 위 조건이 만족한 상황에서 시작된 액티비티는 자신과 동일한 어피니티를 갖는 태스크가 있을경우
해당 태스크로 이동한다
- 즉, [b]어피니티를 가진 A액티비티가 호출되어 해당 태스크에 속해있을때 [b]어피니티를 가진 태스크가
호출되면 A액티비티는 [b]어피니티를 가진 태스크로 이동한다
- 어피니티에 의해 태스크가 이동된 후에 back버튼으로 반환시 원래 해당하던 태스크로 돌아간다
- 하나의 어플리케이션내에서 하나 이상의 기능을 갖는 어플리케이션이 존재할경우 각 액티비티별로 다른
어피니티를 지정해 관리할 수 있다
플래그란? (Android Flag)
- AndroidManifest 에서 플래그를 사용할때에는 <activity> 요소의 launchMode 속성을 사용하며
launchMode에서 사용가능한 속성은 다음과 같이 4가지만 가능하다
standard:
스택중 어느곳에나 위치 가능하며 여러개의 인스턴스가 생성가능하다
singleTop:
스택중 어느곳에나 위치 가능하며 여러개의 인스턴스가 생성가능하고 호출한 activity와 현재
최상위 activity가(top activity) 동일한 경우 최상위 activity가 재사용 된다(기존 최상위 activity는 pop)
singleTask:
루트 액티비티로만 존재하며 하나의 인스턴스만 생성가능하다(타 task에서 동일 activity 사용불가)
다른 액티비티 실행시 동일 Task내에서 실행이 가능하다
singleInstance: 루트 액티비티로만 존재하며 하나의 인스턴스만 생성가능하고 태스크내에 해당
액티비티 하나만 속할 수 있어 다른 액티비티를 실행시키면 새로운 Task가 생성되어
(FLAG_ACTIVITY_NEW_TASK와 동일) 그 Task내에 포함된다
- 소스코드에서 플래그를 사용하고 싶을때에는 Intent에 addFlags() 또는 setFlags() 메소드를 사용한다
FLAG_ACTIVITY_NEW_TASK:
동일 affinity의 task가 있으면 그곳에 실행되고 아니면 새로운 task를 실행
FLAG_ACTIVITY_SINGLE_TOP:
상단 singleTop과 같으며, 실행시 재사용 액티비티의 실행은 onPause(), onNewIntent(), onResume()
순으로 호출된다
☞ [B]를 single top설정: [A][B] 상태에서 [B] 호출시 => [A][재사용된B]
☞ [B]를 single top설정: [B][A] 상태에서 [B] 호출시 => [B][A][B]
FLAG_ACTIVITY_NO_HISTORY:
해당 액티비티는 재활성화시(back키를 눌러 다시 활성화될때) pop 된다
☞ [B]를 no history설정: [A][B][A] 상태에서 back키 사용시 [A]가 pop 되고 [B] 역시
no history에 의해 pop => [A]
FLAG_ACTIVITY_REORDER_TO_FRONT:
activity 호출시 이미 같은 activity가 task내에 있으면 같은 activity는 pop 시키고 해당 activity가 push 된다
☞ [A]를 reorder to front설정: [A][B] 상태에서 [A] 호출시 같은 activity인 [A]가 pop되고 => [B][A]
FLAG_ACTIVITY_CLEAR_TOP:
해당 task에 있는 모든 activity를 pop 시키고 해당 activity가 root activity로 task에 push된다
☞ [A]를 clear top설정: [A][B] 상태에서 [A] 호출시 모두 pop되고 => [A]
단, 해당 플래그는 액티비티를 모두 onDestroy() 시킨 후 새롭게 onCreate() 시키기 때문에 [A]를
유지하려면 FLAG_ACTIVITY_SINGLE_TOP 플래그와 함께 사용하면 된다
http://developer.android.com/reference/android/content/Intent.html
#FLAG_ACTIVITY_BROUGHT_TO_FRONT
- AndroidManifest 에서 플래그를 사용할때에는 <activity> 요소의 launchMode 속성을 사용하며
launchMode에서 사용가능한 속성은 다음과 같이 4가지만 가능하다
standard:
스택중 어느곳에나 위치 가능하며 여러개의 인스턴스가 생성가능하다
singleTop:
스택중 어느곳에나 위치 가능하며 여러개의 인스턴스가 생성가능하고 호출한 activity와 현재
최상위 activity가(top activity) 동일한 경우 최상위 activity가 재사용 된다(기존 최상위 activity는 pop)
singleTask:
루트 액티비티로만 존재하며 하나의 인스턴스만 생성가능하다(타 task에서 동일 activity 사용불가)
다른 액티비티 실행시 동일 Task내에서 실행이 가능하다
singleInstance: 루트 액티비티로만 존재하며 하나의 인스턴스만 생성가능하고 태스크내에 해당
액티비티 하나만 속할 수 있어 다른 액티비티를 실행시키면 새로운 Task가 생성되어
(FLAG_ACTIVITY_NEW_TASK와 동일) 그 Task내에 포함된다
- 소스코드에서 플래그를 사용하고 싶을때에는 Intent에 addFlags() 또는 setFlags() 메소드를 사용한다
FLAG_ACTIVITY_NEW_TASK:
동일 affinity의 task가 있으면 그곳에 실행되고 아니면 새로운 task를 실행
FLAG_ACTIVITY_SINGLE_TOP:
상단 singleTop과 같으며, 실행시 재사용 액티비티의 실행은 onPause(), onNewIntent(), onResume()
순으로 호출된다
☞ [B]를 single top설정: [A][B] 상태에서 [B] 호출시 => [A][재사용된B]
☞ [B]를 single top설정: [B][A] 상태에서 [B] 호출시 => [B][A][B]
FLAG_ACTIVITY_NO_HISTORY:
해당 액티비티는 재활성화시(back키를 눌러 다시 활성화될때) pop 된다
☞ [B]를 no history설정: [A][B][A] 상태에서 back키 사용시 [A]가 pop 되고 [B] 역시
no history에 의해 pop => [A]
FLAG_ACTIVITY_REORDER_TO_FRONT:
activity 호출시 이미 같은 activity가 task내에 있으면 같은 activity는 pop 시키고 해당 activity가 push 된다
☞ [A]를 reorder to front설정: [A][B] 상태에서 [A] 호출시 같은 activity인 [A]가 pop되고 => [B][A]
FLAG_ACTIVITY_CLEAR_TOP:
해당 task에 있는 모든 activity를 pop 시키고 해당 activity가 root activity로 task에 push된다
☞ [A]를 clear top설정: [A][B] 상태에서 [A] 호출시 모두 pop되고 => [A]
단, 해당 플래그는 액티비티를 모두 onDestroy() 시킨 후 새롭게 onCreate() 시키기 때문에 [A]를
유지하려면 FLAG_ACTIVITY_SINGLE_TOP 플래그와 함께 사용하면 된다
http://developer.android.com/reference/android/content/Intent.html
#FLAG_ACTIVITY_BROUGHT_TO_FRONT
Clear Task
- Task를 오랫동안 사용하지 않고 방치해 두면 시스템은 Root Activity를 제외한 모든 액티비티를 Clear 시킨다
- 이러한 동작은 Activity의 속성을 수정하여 제어할 수 있다
alwaysRetainTaskState:
Task의 Root Activity에 true로 설정되어 있다면 상단에 언급되었던 동작은 발생하지 않으며 Task는
오랜 시간 이후에도 Stack에 있는 모든 Activity를 유지한다
clearTaskOnLaunch:
이 속성이 true로 설정되어 있으면 alwaysRetainTaskState 와 정반대로 사용자가 Task를 떠났다가
다시 돌아올 때마다 항상 Stack은 Root Activity로 정리된다
finishOnTaskLaunch:
이 속성은 clearTaskOnLaunch와 유사하지만 전체 Task가 아닌 단일 Activity에서 동작한다
그리고 그것은 Root Activity를 포함한 어떤 Activity가 사라지는 원인이 될 수도 있다
true로 설정되어 있을 때, Activity는 현재 Session 동안 Task의 일부만 유지한다
만일 사용자가 해당 Task를 벗어났다가 다시 돌아오면 더이상 존재하지 않는다
- Task를 오랫동안 사용하지 않고 방치해 두면 시스템은 Root Activity를 제외한 모든 액티비티를 Clear 시킨다
- 이러한 동작은 Activity의 속성을 수정하여 제어할 수 있다
alwaysRetainTaskState:
Task의 Root Activity에 true로 설정되어 있다면 상단에 언급되었던 동작은 발생하지 않으며 Task는
오랜 시간 이후에도 Stack에 있는 모든 Activity를 유지한다
clearTaskOnLaunch:
이 속성이 true로 설정되어 있으면 alwaysRetainTaskState 와 정반대로 사용자가 Task를 떠났다가
다시 돌아올 때마다 항상 Stack은 Root Activity로 정리된다
finishOnTaskLaunch:
이 속성은 clearTaskOnLaunch와 유사하지만 전체 Task가 아닌 단일 Activity에서 동작한다
그리고 그것은 Root Activity를 포함한 어떤 Activity가 사라지는 원인이 될 수도 있다
true로 설정되어 있을 때, Activity는 현재 Session 동안 Task의 일부만 유지한다
만일 사용자가 해당 Task를 벗어났다가 다시 돌아오면 더이상 존재하지 않는다
액티비티 생명주기 (Activity LifeCycle)
- Posted at 2010. 8. 13. 02:03
- Posted by 루지메이앙
- Filed under 안드로이드/이론정리
');
}
//-->
|
');
}
//-->
|
안드로이드 액티비티 생명주기 (Android Activity LifeCycle)
- 액티비티는 효율적인 메모리 관리를 위해 생성, 소멸되는 조건인 생명주기를(Lifecycle) 가지고 있다
- 생명주기는 7가지 단계로 구분되며 다음 순서를 기본으로 진행된다
onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart() 또는 onDestroy()
- 각 상태에 따라 필요한 작업을 메소드를 오버라이드 하여 처리해주면 된다
- 여러개의 액티비티를 이용중 시스템의 리소스가 부족하면 다음상태의 액티비티를 강제로 종료시킨다
onDestroy() - 1순위, onStop() - 2순위, onPause() - 3순위
- onPause() 상태의 Callback은(실행완료) 보장하지만, onStop()과 onDestroy()는 보장할 수 없다
(미완료 상태에서 System이 강제종료 시킬 수 있으므로 되도록 onPause()에서 종료를 대비 해야한다)
- 강제종료된 Activity는 리소스가 확보되면 다시 복구 시킨다
- 강제종료시에는 데이터 복원를 대비하여 onPause() 실행 전 onSaveInstanceState(Bundle b) 를 실행시킨다
- 강제종료시에는 onStart() 호출 후 실행되는 onRestoreInstanceState(Bundle b) 또는
onCreate(Bundle b) 를 사용하여 복원작업을 수행할 수 있다
- 화면의 Orientation(가로/세로) 변경시 onDestroy()를 호출 후 onCreate()가 실행된다
- 액티비티는 효율적인 메모리 관리를 위해 생성, 소멸되는 조건인 생명주기를(Lifecycle) 가지고 있다
- 생명주기는 7가지 단계로 구분되며 다음 순서를 기본으로 진행된다
onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart() 또는 onDestroy()
- 각 상태에 따라 필요한 작업을 메소드를 오버라이드 하여 처리해주면 된다
- 여러개의 액티비티를 이용중 시스템의 리소스가 부족하면 다음상태의 액티비티를 강제로 종료시킨다
onDestroy() - 1순위, onStop() - 2순위, onPause() - 3순위
- onPause() 상태의 Callback은(실행완료) 보장하지만, onStop()과 onDestroy()는 보장할 수 없다
(미완료 상태에서 System이 강제종료 시킬 수 있으므로 되도록 onPause()에서 종료를 대비 해야한다)
- 강제종료된 Activity는 리소스가 확보되면 다시 복구 시킨다
- 강제종료시에는 데이터 복원를 대비하여 onPause() 실행 전 onSaveInstanceState(Bundle b) 를 실행시킨다
- 강제종료시에는 onStart() 호출 후 실행되는 onRestoreInstanceState(Bundle b) 또는
onCreate(Bundle b) 를 사용하여 복원작업을 수행할 수 있다
- 화면의 Orientation(가로/세로) 변경시 onDestroy()를 호출 후 onCreate()가 실행된다
- onCreate()
액티비티가 처음 생성될때와(화면이 회전되어 orientation이 변경될때도 기본으로 실행) 실행되며
레이아웃배치와 변수선언 등 각종 초기화 작업을 구현하는 단계이다
완료 후 onStart()를 호출한다
- onStart()
onCreate() 이후 또는 onRestart()로 다시 시작된 후 처음으로 호출하는 단계이며
화면생성이 완료되고 사용자 입력을 받기 바로 직전의 단계이다
완료 후 onResume()를 호출한다
- onResume()
onResume() 이 실행되면 상호작용이 가능하며 모든준비가 완료되고 액티비티가 완벽하게 활성 상태가 된다.
onPause()에서 다시 시작되었을때 호출하는 단계이기도 하다
- onPause()
상태에서 다른 Activity에 포커스를 넘겨준 후 비활성화(background) 되며 상호작용이 중단된 단계이다
이 상태 이후부터는 언제든지 시스템의 강제종료가 가능하며 이 상태가 완료 되어야 다음 Activity가
활성화(foreground) 되고 이후 이 액티비티는 onStop() 상태가 된다
단, 다음 Activity 의 테마가 translucent 인 투명한 배경의 Activity 와 같이 풀스크린이 아닌
Activity일 경우에는 onStop() 상태가 되지 않고 onPause()를 유지한다
하나 더 덧붙이면, 투명배경의 Activity와 비슷한 Diaglog 의 경우에는 onPause()가 적용되지 않는다
- onStop()
Activity가 사용자에게 보이지 않는 비활성화 상태로 돌아서게 되면 호출하는 단계이다
=> 다른 activity 를 활성화 시켰을때는 background로 onStop() 상태가 유지되며,
=> 현 액티비티에서 finish()를 호출하거나 back key를 이용해 home activity로 돌아갈때는
onStop() 후 onDestroy()를 호출하고
=> 다음 Activity에서 back 하여 현 액티비티로 돌아올때는 onRestart(), onStart(), onResume 순으로 호출한다
- onDestroy()
finish(), finishActivity() 같은 정상적인 종료시에 호출되며, onCreate()에서 호출한 자원의 반납등을 하는 단계이다
- onRestart()
onStop()인 비활성화 상태에서 다시 활성화되는 단계에서 발생한다
액티비티가 처음 생성될때와(화면이 회전되어 orientation이 변경될때도 기본으로 실행) 실행되며
레이아웃배치와 변수선언 등 각종 초기화 작업을 구현하는 단계이다
완료 후 onStart()를 호출한다
- onStart()
onCreate() 이후 또는 onRestart()로 다시 시작된 후 처음으로 호출하는 단계이며
화면생성이 완료되고 사용자 입력을 받기 바로 직전의 단계이다
완료 후 onResume()를 호출한다
- onResume()
onResume() 이 실행되면 상호작용이 가능하며 모든준비가 완료되고 액티비티가 완벽하게 활성 상태가 된다.
onPause()에서 다시 시작되었을때 호출하는 단계이기도 하다
- onPause()
상태에서 다른 Activity에 포커스를 넘겨준 후 비활성화(background) 되며 상호작용이 중단된 단계이다
이 상태 이후부터는 언제든지 시스템의 강제종료가 가능하며 이 상태가 완료 되어야 다음 Activity가
활성화(foreground) 되고 이후 이 액티비티는 onStop() 상태가 된다
단, 다음 Activity 의 테마가 translucent 인 투명한 배경의 Activity 와 같이 풀스크린이 아닌
Activity일 경우에는 onStop() 상태가 되지 않고 onPause()를 유지한다
하나 더 덧붙이면, 투명배경의 Activity와 비슷한 Diaglog 의 경우에는 onPause()가 적용되지 않는다
- onStop()
Activity가 사용자에게 보이지 않는 비활성화 상태로 돌아서게 되면 호출하는 단계이다
=> 다른 activity 를 활성화 시켰을때는 background로 onStop() 상태가 유지되며,
=> 현 액티비티에서 finish()를 호출하거나 back key를 이용해 home activity로 돌아갈때는
onStop() 후 onDestroy()를 호출하고
=> 다음 Activity에서 back 하여 현 액티비티로 돌아올때는 onRestart(), onStart(), onResume 순으로 호출한다
- onDestroy()
finish(), finishActivity() 같은 정상적인 종료시에 호출되며, onCreate()에서 호출한 자원의 반납등을 하는 단계이다
- onRestart()
onStop()인 비활성화 상태에서 다시 활성화되는 단계에서 발생한다
액티비티란? (Activity)
- Posted at 2010. 8. 13. 02:02
- Posted by 루지메이앙
- Filed under 안드로이드/이론정리
');
}
//-->
|
');
}
//-->
|
안드로이드 액티비티란? (Android Activity)
- 사용자 인터페이스를 구성하는 기본 단위이며 보통 하나의 화면이 하나의 액티비티라고 봐도 무방하다
- 액티비티 매니저에(Activity Manager-AndroidManifest 를 참조하여 관리) 의해 관리되며
Activity Class를 상속 받아 구성한다
- 한개 이상의 레이아웃과 뷰, 이벤트로 구성되며 한개 이상의 액티비티를 모아
응용프로그램을(Application) 구현할 수 있다
- 런쳐(Application Launcher) 에 의해 호출되며 (AndroidManifest 내에 정의) 다른 액티비티를 호출할 수 있다
(startActivity, startActivityForResult 메소드에 의해 호출되며 onActivityResult 메소드에 의해 결과를 받는다)
- finish 메소드로 종료할 수 있으며 startActivityForResult로 호출한 액티비티를
종료시키고자 할때는 finishActivity 메소드를 이용한다
- 액티비티를 호출할때에는 인텐트를(Intent) 사용하며 호출한 액티비티는 태스크에(Task) 차곡 차곡 쌓인다
- 액티비티는 생명주기를(LifeCycle) 갖는다
- 액티비티는 연관성을(Affinity) 갖는다
- 사용자 인터페이스를 구성하는 기본 단위이며 보통 하나의 화면이 하나의 액티비티라고 봐도 무방하다
- 액티비티 매니저에(Activity Manager-AndroidManifest 를 참조하여 관리) 의해 관리되며
Activity Class를 상속 받아 구성한다
- 한개 이상의 레이아웃과 뷰, 이벤트로 구성되며 한개 이상의 액티비티를 모아
응용프로그램을(Application) 구현할 수 있다
- 런쳐(Application Launcher) 에 의해 호출되며 (AndroidManifest 내에 정의) 다른 액티비티를 호출할 수 있다
(startActivity, startActivityForResult 메소드에 의해 호출되며 onActivityResult 메소드에 의해 결과를 받는다)
- finish 메소드로 종료할 수 있으며 startActivityForResult로 호출한 액티비티를
종료시키고자 할때는 finishActivity 메소드를 이용한다
- 액티비티를 호출할때에는 인텐트를(Intent) 사용하며 호출한 액티비티는 태스크에(Task) 차곡 차곡 쌓인다
- 액티비티는 생명주기를(LifeCycle) 갖는다
- 액티비티는 연관성을(Affinity) 갖는다
안드로이드 어플리케이션 (Android Application)
- Posted at 2010. 8. 13. 02:02
- Posted by 루지메이앙
- Filed under 안드로이드/이론정리
');
}
//-->
|
');
}
//-->
|
안드로이드 어플리케이션 (Android Application)
- 하나 이상의 컴포넌트와 리소스등으로 구성되며 패키지 파일로(android package = .apk파일) 묶여 배포된다.
- 하나 이상의 컴포넌트와 리소스등으로 구성되며 패키지 파일로(android package = .apk파일) 묶여 배포된다.
컴포넌트란? (Component)
- 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broadcast Receiver),
컨텐트 프로바이더(Content Provider) 로 구성된다.
- 사용하고자 하는 컴포넌트는 AndroidManifest에 미리 정의해 두어야 한다
- 각각의 컴포넌트는 필요할때마다 인스턴스화 시켜 사용할 수 있다
- Content Provider는 ContentResolver 에 의해 활성화 되며 나머지 컴포넌트들은
인텐트에(Intent) 의해 활성화 된다.
- 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broadcast Receiver),
컨텐트 프로바이더(Content Provider) 로 구성된다.
- 사용하고자 하는 컴포넌트는 AndroidManifest에 미리 정의해 두어야 한다
- 각각의 컴포넌트는 필요할때마다 인스턴스화 시켜 사용할 수 있다
- Content Provider는 ContentResolver 에 의해 활성화 되며 나머지 컴포넌트들은
인텐트에(Intent) 의해 활성화 된다.
화면 회전시 리로드하지 않고 내용 유지하기 (Orientation Change Keep Content)
- Posted at 2010. 8. 8. 14:24
- Posted by 루지메이앙
- Filed under 안드로이드/VIEW (UI)
');
}
//-->
|
');
}
//-->
|
안드로이드 화면 회전시 리로드하지 않고 내용 유지하기 (Android Orientation Change Keep Content)
안드로이드는 화면의 orientation 변경시 기본적으로 onDestroy()를 호출 후 onCreate()를 호출하여
해당 화면의 액티비티가 초기화 되며 이것은 아래의 방법을 통해 방지가 가능합니다
주요시스템 변경은 onConfigurationChanged를 이용해 감지할 수 있습니다
- AndroidManifest 에 정의
<activity android:configChanges="orientation|keyboardHidden"></activity>
- configChanges시 관련내용 제어하기
- Configuration
http://developer.android.com/reference/android/R.attr.html#configChanges
http://developer.android.com/reference/android/content/res/Configuration.html
안드로이드는 화면의 orientation 변경시 기본적으로 onDestroy()를 호출 후 onCreate()를 호출하여
해당 화면의 액티비티가 초기화 되며 이것은 아래의 방법을 통해 방지가 가능합니다
주요시스템 변경은 onConfigurationChanged를 이용해 감지할 수 있습니다
orientation: 스크린이 세로에서 가로로 바뀌는것
keyboardHidden: 키보드가 보여지거나 숨겨지는것.
fontScale: 사용자가 원하는 폰트의 크기를 변경하는것.
locale: 사용자가 언어 세팅을 변경하는것.
keyboard: 키보드의 종류가 바뀌는것.
keyboardHidden: 키보드가 보여지거나 숨겨지는것.
fontScale: 사용자가 원하는 폰트의 크기를 변경하는것.
locale: 사용자가 언어 세팅을 변경하는것.
keyboard: 키보드의 종류가 바뀌는것.
- AndroidManifest 에 정의
<activity android:configChanges="orientation|keyboardHidden"></activity>
- configChanges시 관련내용 제어하기
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); /* // 위 소스만 적용했을때 내용이 유지되고 추가 코드를 입력할때는 아래와 같이 한다 if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) // 가로모드로 변경되었을때 if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) // 키보드가 보여질때 */ }
- Configuration
http://developer.android.com/reference/android/R.attr.html#configChanges
http://developer.android.com/reference/android/content/res/Configuration.html