2011-01-08 2 views
5

오랫동안 백그라운드에서 포그 라운드로 돌아올 때를 제외하고는 정상적으로 작동하는 응용 프로그램이 있습니다. 시스템이 내 활동 스택을 지울 때 플래그 alwaysRetainTaskState와 관련이 있는지 궁금합니다. 나는 그것을 시험하고 싶다. 그러나 나는 매번 30 분 동안 앉아 있고 싶지 않다. 다른 방법으로 정상적인 시스템 동작을 트리거하는 방법이 있습니까?android 테스트 방법 : alwaysRetainTaskState

업데이트 : 플래그를 android : clearTaskOnLaunch로 설정하면 앱을 다시 시작할 때 alwaysRetainTaskState와 동일한 작업을 수행 할 예정입니까?

답변

-1

아마 당신이 응용 프로그램에 데이터를 저장하기 때문입니다. 많은 시간이 지나면 응용 프로그램이 종료됩니다 (메모리 등으로 인해).

반환 할 때 충돌이 발생하는 null 인 Application 개체를 제외한 모든 개체를 복원합니다.

+0

응용 프로그램은 확실히 여기에 맞는 용어가 아닙니다. 활동은 기억 때문에 죽습니다. 모든 구성 요소가 살아있는 한 응용 프로그램은 항상 살아 있습니다. 또한 사용자의 코드를 보지 않았고 반드시 유효하지 않은 가정을하고 있습니다. 이 동작은 Applicatio 개체에 정보가없는 경우 확실히 발생할 수 있습니다. 마지막으로, 그것은 어떤 식 으로든 OP 질문을 다루지 않습니다. OP는 깃발을 테스트하려고합니다. –

3

다른 방법으로 정상적인 시스템 동작을 트리거 할 수있는 방법이 있습니까?

alwaysRetainTaskState를 테스트하는 가장 쉬운 방법은 액티비티를 종료하고 많은 메모리를 사용하는 여러 응용 프로그램 (하나씩 차례대로)을 시작하는 것입니다. 그것의 반복적이지만 상당히 신뢰할 수 있습니다. 내가 적절한 애플리케이션을 골라 내면 약 40 초 후에 갤럭시 S-II에서 트리거를 실행할 수있다.

그 짧은 말로,이 플래그를 테스트하는 다른 직접적인 방법이 없습니다.

플래그 android : clearTaskOnLaunch를 설정하면 앱을 다시 실행하면 alwaysRetainTaskState와 동일한 작업을 수행 할 예정입니까?

절대적으로 아닙니다. ClearTaskOnLaunch은 기본적으로 앱이 루트 활동으로 돌아갈 것을 의미합니다. 다른 모든 활동은 활동 스택에서 제거됩니다. 즉, 귀하의 활동이 자녀 활동에 의존하여 콘텐츠를 제공하면 모든 것이 손실됩니다. 즉, 사용자가 응용 프로그램의 활동 스택의 초기 상태로 되돌아갑니다. 그것 의 상태를 유지 활동은 alwaysRetainTaskState 플래그에 따라 다릅니다.

추가 정보

alwaysRetainTaskState는 루트 활동에서만 유용합니다. 그것의 기본 목적은 그것과 모든 다른 활동들을 오랜 기간 동안 유지하는 것입니다. 해당 액티비티에 직접 연결되지 않은 객체는 유동적이어서 버려 질 수 있습니다. 종종 alwaysRetainTaskState이 작동하지 않으면 코드가 수동으로 참조를 없애기 때문입니다 (일반적으로 onPause() 또는 유사한 이벤트에 대한 응답으로).

관련 문제