2012-09-04 1 views
1

여기 내 활동 중 하나에 작은 코드가 있습니다.Android 창 플래그 : 전체 앱 자체에서 지속적으로 유지 관리중인 플래그가 설정되어 있습니까?

Window window = this.getWindow(); 
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
window.addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON); 

이미 WAKE_LOCK 사용 권한을 허용하도록 매니페스트를 설정했습니다. 자, 제가 잘 모르는 것은 하나의 활동에 플래그가 설정되어 있다는 것입니다.

많은 활동 중 하나가 화면 보호기 깃발처럼 창에 깃발을 "추가"하면 앱 전체에 지속됩니까?

활동이 플래그 집합을 설정하거나 추가하는 경우 플래그가 지정된 활동이 활성화 된 경우에만 플래그가 활성화됩니다. Intent를 호출하여 (플래그를 지정하지 않은) 다른 활동을 시작하면 의도하지 않은 활동이 완료 될 때까지 set 플래그가 취소되고 플래그가 지정된 활동에서 원래의 세트 상태로 되돌아 갈 수 있습니다.

내가 틀렸어? 미리 감사드립니다.

답변

5

흥미로운 질문 :

난 그냥 두 개의 활동, 하나의 개구부 버튼을 클릭하여 다른과 약간의 응용 프로그램을 작성하여 테스트했습니다. Screen timeout을 15 초로 설정했습니다.

Activity1에는 화면을 계속 유지하는 명령이 포함되어 있습니다. onCreate() 메서드, Activity2는 표시되지 않습니다. 이제 Activity1이 보일 때 화면이 꺼지지 않습니다 (분명히). 내가 Activity2를 연 다음 15 초. 당신 말이 맞습니다. 깃발은 그 활동이 보여지는 한 유효합니다.

흥미롭게도 Activity1에 finish()을 부르는 것이 중요하지 않습니다. Activity1이 소멸되지 않아도 (onDestroy()이 호출되지 않은 경우에만 onPause()) 플래그가 유효하지 않습니다.

첫 번째 활동으로 돌아 가면 onCreate()은 실제로 Activity1에서는 다시 호출되지 않지만 th 플래그는 다시 유효합니다 (활동이 이전 기능으로 스택에서 재개되기 때문에).

+0

정말 실험으로 해결하는 것이 가장 좋습니다. 그러나 전화로 타이핑하고 있습니다. 나는 내 컴퓨터 근처에 있지 않다. :( –

3

Window은 활동이 시작될 때 항상 재설정됩니다 (onCreate). 일부 전역 응용 프로그램 창 상태에는 플래그를 추가하지 않습니다.

Activity에 대해 Window을 별도로 설정해야합니다.

가 다른 활동을 시작하는 의도를 호출하면 ... .. 호출 Activity이 파괴되고 새로운 Activity이 만들어집니다. 새로운 하나는 리셋 창을 가지고 있으며 처음 Activity으로 돌아 오면 창은 다시 리셋됩니다. 그러나 Window을 다시 설정할 수있는 곳에서 onCreate을 호출해야합니다. 최고의 실험으로 정착되어

+0

감사합니다. : D 만약 내가 하나 이상의 대답을 선택할 수 있습니다. –

+0

이것은 가장 적합한 답입니다! –

관련 문제