2013-04-07 5 views
4

저는 Android에 비교적 익숙하지 만 지난 한 해 동안 많은 앱을 만들었으므로 저를 용서해줍니다.화면 방향이 변경 될 때 새로운 활동이 생성되었습니다.

기기에서 앱을 실행하고 기기를 켜서 화면 방향을 변경하면 표시되는 활동이 완전히 재현된다는 것을 알고 있습니다. 나는 유튜브 앱 (Nexus 7/Android 4.2.2)을 사용하고 일부 동영상을 재생 한 다음 화면을 뒤집어 방향을 바꿉니다. 비디오가 계속 재생되고 그에 따라 모든 크기가 조정됩니다 ... 활동이 완전히 다시 작성되면 어떻게 가능합니까?

감사합니다.

답변

4

AndroidManifest.xml에서 android : configChanges를 추가하면 오리엔테이션 변경시 활동이 다시 생성되지 않습니다. 가로 및 세로 모드의 레이아웃이 동일하기를 바랍니다.

<activity android:label="Your Activity Name" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
     android:name="com.yourpackage"> 

내가 onPause()onResume() 방법을보고 당신을 제안, 여기에 더 추가하고 조각을 재생하는 경우 다음 onSaveInstanceStateonRetainInstanceState에 시계가 아닌 " 활동과 XML의 변경 사항을 적용하려면 디자인에 의해 파괴된다. 당신이 당신의 활동에서 지역 변수의 값을 잃을 걱정이 있다면는 "

http://developer.android.com/training/basics/activity-lifecycle/index.html

+0

이것은 나쁜 충고입니다 ... 애플 리케이션은 자신의 상태를 저장해야합니다. 즉, 사용자가 로테이션을 처리하고 OS가 메모리를 확보 할 수 있도록해야합니다 (사용자가 잠시 떠날 때). 이 방법을 사용하는 것은 회전시 다시 시작하기에는 너무 비싸지 만 대부분의 앱은 그렇지 않은 복잡한 앱을 위해 설계되었습니다. –

+1

@StevenByle : 나는 당신과 동의한다, 나는 나의 포스트에서 볼 활동 라이프 사이클에 대해 분명하게 지적했다, coz 활동은 의도적으로 파괴된다. – Thalaivar

+2

이 방법은 시장에 나와있는 모든 앱의 상당 부분에서 사용됩니다. 전체 활동을 파괴하고 순환계에서 다시 시작하는 것은 Google의 큰 실수였습니다. 혼란스럽고 버그가 발생하며 프로그래머의 고통의 큰 원인입니다. 그들이 두 가지 해킹을 구현하지 않아야한다는 사실은 그저 나쁜 생각이라는 증거입니다. 가로 및 세로 모드 레이아웃이 완전히 분리되어있어 앱에 이러한 기능이 필요한 경우가 아니라면이를 수정하는 올바른 방법입니다. Google의 나쁜 아이디어를 완전히 피할 수 있습니다. 그러면 결국 실수를 저지르고 변경하게됩니다. –

-1

... 당신은 일의 일부 싱글 톤 패턴을 사용할 수 있습니다 ose 변수. 이것은 아름다운 해결책은 아니지만 작동 할 수 있습니다.

+0

이 답변은 질문과 아무 관련이 없습니다. –

관련 문제