안드로이드 회전 예제

나는 안드로이드 스튜디오에서이 독특한 문제를 겪고있어요. 나는 화면 회전을 이해하기 위해,이 간단한 응용 프로그램을했다. 화면이 회전할 때의 개념을 이해하고 활동이 소멸되고 onCreate 메서드를 불러일으킵니다. 데이터를 저장하려면 onSaveInstanceState 메서드를 재정의하여 번들에 넣어야 합니다. 나는 2 버튼과 중간에 숫자와 응용 프로그램을 했다. 클릭하는 버튼에 따라 번호가 변경됩니다. 그러나 어떤 이유로 화면을 회전할 때 숫자가 재설정되지만 화면이 회전하기 전에 값을 유지했습니다. 예를 들어 숫자를 5로 설정하고 화면을 회전하면 숫자가 0으로 이동하지만 증가하면 4가 줄이면 6으로 이동합니다. 어떻게 든 여전히 그 값을 유지하지만 0으로 재설정, 나는 이유를 모르겠어요. 코드 1은 다음과 같습니다. 당신은 이미 @Override 경우 onConfigurationChanged () 자바 코드 (안드로이드 활동 클래스)에서) 안드로이드 화면 방향 변경을 처리하기위한.

그런 다음 화면 방향변경시 활동이 다시 시작되지 않습니다. 나는 위의 포인트 4에서 설명으로. 프래그먼트를 사용하여 방향 변경을 처리하는 일반적인 함정 중 하나는 활동이 다시 생성될 때마다 실수로 인스턴스화하고 다시 추가하는 것입니다. Android에서 방향 변경 내용을 처리하도록 허용하면 조각을 다시 인스턴스화하고, 활동에 다시 추가하고, 상위 활동을 다시 만들 때 조각 백스택을 다시 만드는 작업을 처리합니다. 따라서 활동 콜백에 전달된 saveInstanceState 번들이 null인 경우에만 활동에 조각을 인스턴스화하거나 추가해야 합니다. 1 단계 : 활동 항목과 함께 AndroidManifest 파일에 아래 줄을 추가하십시오. 이제 방향이 변경될 때마다 AsyncTasks를 취소하고 다시 시작하는 것이 항상 옵션(또는 적어도 좋은 옵션)은 아닙니다. 예를 들어 파일을 다운로드하는 작업이 있고 사용자가 갑자기 장치를 회전 할 때 거의 완료된 경우 작업을 취소한 다음 다시 시작하는 것은 매우 불쾌한 사용자 환경입니다. 이렇게 하면 앞에서 설명한 조각으로 setRetainInstance(true)를 호출하는 것으로 돌아갑니다. 내가 설명했듯이 setRetainInstance(true)는 구성 변경이 발생할 때 안드로이드에 조각을 파괴하지 말라고 지시합니다.

보존된 프래그먼트를 사용하여 AsyncTask를 호스팅하는 경우 작업을 다시 시작하지 않아도 됩니다. 하지만 여전히 염두에 두어야 할 몇 가지가 있습니다. 보존된 조각에는 UI가 없어야 합니다. 대신 활동이 구현할 인터페이스와 프래그먼트가 활동에 UI(또는 기타)를 업데이트하도록 지시하는 데 사용할 인터페이스를 선언할 수 있습니다. onAttach에서 해당 인터페이스에 활동을 캐스팅하고 수신기 멤버 변수에 저장해야 합니다. onDetach에서는 해당 리스너 변수를 null로 설정해야 하므로 활동 참조가 누수되지 않습니다. AsyncTask 콜백(onPreExecute, onProgressUpdate, onPostExecute 및 onCancelled)에서 수신기가 null이 아닌지 확인한 다음 수신기에서 적절한 콜백을 트리거하고 나머지를 처리하도록 해야 합니다. 다음은 이를 구현하는 방법의 예입니다: Android 화면 방향 변경 수명 주기에 혼동이 있을 수 있습니다. 경우에 따라 장치를 회전하는 동안 활동이 다시 시작되는 것을 관찰할 수 있습니다. 때로는 아무 일도 일어나지 않습니다. 다음은 안드로이드 화면 방향 변경 수명 주기에 대한 간단한 규칙입니다. 6.

나는 SDK 버전 안드로이드 4.0.3 및 이클립스 버전 인디고를 사용했다. 그러나 모든 버전을 사용할 수 있습니다. 일부 장치 구성은 런타임 중에 변경될 수 있습니다(예: 화면 방향, 키보드 가용성 및 사용자가 다중 창 모드를 사용하도록 설정하는 경우). 이러한 변경이 발생하면 Android에서 실행 중인 활동(onDestroy()이 호출되고 그 다음에 onCreate()가 다시 시작됩니다. 다시 시작 동작은 새 장치 구성과 일치하는 대체 리소스로 응용 프로그램을 자동으로 다시 로드하여 응용 프로그램이 새 구성에 적응할 수 있도록 설계되었습니다.