2013-08-16 3 views
1

장치를 가로 방향에서 세로 방향으로 또는 그 반대로 바꿀 때 onCreate 메서드가 호출된다는 것을 알고 있습니다. 그게 나를 위해 몇 가지 문제의 원인이되었습니다.변수가 방향 변경시 값을 유지합니까?

나는 다운로드 할 수있는 데이터베이스가있다. DAO 개체가이 데이터를 개체로 변환하여 Vector<DownloadTask>에 넣는 시작 화면을 만들 계획입니다. 이는 AsyncTaskdoInBackground()에서 발생합니다.
onPostExecute 스플래시 화면이 새 Activity으로 시작됩니다.

모든 나는 방향 변경을 처리해야하는 경우를 제외하고 지금까지 괜찮습니다.
새로운 Acitivity는 시작 화면 후 다운로드 예약을 담당하는 Timer을 시작합니다. 이는 onCreate에서 시작됩니다. DownloadTask은 모두 Runnable을 구현하므로 스레드입니다.

다운로드가 이상하거나 갑자기 정지입니다

는 스레드가 스케줄러이 말과 동시에 실행되는 스레드의 수를 줄일 예정이다. 이것은 동시 다운로드 수를 제한하는 것입니다.

따라서 타이밍이 바뀌거나 방향이 바뀌거나 스레드 라인이 일치하지 않으면 타이머는 어떻게됩니까? null이 될까요?

는 방향 변경이 변수는 디폴트 값으로 재설정됩니다 때?
또한 오리엔테이션 변경을 방지하려면 어떻게해야합니까 ?? 일부 게임처럼

답변

2

방향이 바뀌면 변수가 기본값으로 재설정됩니까?

수준 변수가 0이면 Activity이 파괴되어 매번 다시 작성되기 때문에 기본값으로 돌아갑니다. 이것을 피하기 위해 매번 finish()에 변수를 저장할 수 있지만 이것이 언제 일어날 지 모르기 때문에 지저분 할 수 있습니다 (그러나 그 방법이 있습니다). 당신은 또한 당신이 manifest<activity> 태그

android:configChanges="orientation" 

을 추가하여 이러한 변경 사항을 처리합니다 당신의 manifest.xml에 지정할 수 있습니다. 문서에서, 그들은 이것을 권장하지 않지만 대부분 그들의 엉덩이를 덮기 위해 생각합니다. 나는 그것을하고 지금까지 어떤 문제도 가지지 않고있다. 이렇게하면 Activity이 파괴되지 않습니다. 또한

, 어떻게 방향 변경을 방지합니까?

당신은 당신이 특정 orientation를 원하는 사람들 Activities에 대한 <activity> 태그에

android:screenOrientation="portrait" 

같은 것을 추가하여 manifest도이 작업을 수행 할 수 있습니다.

+0

는 나도 워드 프로세서를 통해 거라고, 나는 생각하는'들의 OnDestroy() 방향 변경이 발생할 때 '가 호출됩니다.데이터베이스에 다시 데이터를 저장해야합니다, 나는 믿습니다 :)'onStop'이 빠를 것이라고 생각합니까 ?? –

+0

"빠른"이라는 것이 무슨 뜻인지 모르겠지만'onDestroy()'에 대한 문서를 참고하십시오, "참고 :이 메서드는 데이터 저장을위한 장소로 간주하지 마십시오!" – codeMagic

+0

어디에서 저장합니까? 데이터를 다시 db ?? –

관련 문제