2013-07-26 12 views
9

30 분이면 누구나 자신의 앱이 훌륭하게 작동하는 것 같아요. 그러나 앱이 하루 정도 기기의 배경에 앉으면 NullPointerExceptions이 표시되고 Garbage Collector이 (가) 물건을 훔쳐서 예상대로 작동하지 않습니다. 오랜 시간 백그라운드에서 실행중인 앱을 시뮬레이트 할 수있는 방법이 있습니까?Android : 장기 실행 시간 시뮬레이션

+0

어떤 NullPointerException을 얻었습니까? – andy256

답변

0

특정 시간 동안 기다릴 필요가 없습니다. 당신은 단지 기억을 먹는 것을해야만합니다. 이것은 당신이 작업을 위해 생성하는 특별한 앱 일 수 있지만, 실제로 그렇게 할 필요는 없습니다.

제 경험상 대부분의 게임이 작동하는 것 같습니다. 그래픽이 많은 게임은 텍스처 나 메모리 등 많은 메모리를 사용하기 때문에 잘 작동하는 경향이 있습니다. 진보 된 그래픽이나 무거운 프로세싱이 없더라도 Angry Birds 나 Candy Crush도 작동합니다 (아마 그들이 배터리를 씹는 것과 같은 이유). 일반적으로 레벨을 한 번 재생 한 후에는 활동으로 돌아가서 잃어버린 것을 볼 수 있습니다.

데이터를 영속화/초기화하는 데 스마트 방법을 사용하므로 문제가 많지는 않지만 가끔씩 (또는 사용자가) 예상치 못한 문제에 부딪히는 경우가 있습니다. 추적 해.

4

설정 -> 개발자 옵션 -> 백그라운드 프로세스 제한 -> 최대 1 개 프로세스.

재미있게 끝났을 때 다시 설정하는 것을 잊지 마십시오. 건배.

+0

휴면 상태가 아닙니다. 휴면 상태 인 경우 여전히 RAM에 있음을 의미하고 일시 중지 된 상태이므로 30 분 후에도 RAM에있는 경우 테스트하지 않는 것이 좋습니다. 모든 것이 동일 할 것입니다. GC는 더 이상 참조되지 않는 개체에만 영향을 미칩니다. 따라서 GC만으로는 아무런 영향을 미치지 않습니다. 그러나 응용 프로그램 수명주기에 영향을주는 것은 * 위의 방법을 사용하여 테스트 할 수있는 활동 또는 단편의 재생성입니다. –

+0

다시 GC는 액티비티가 포 그라운드에있는 동안에도 참조되지 않은 객체를 수집합니다. 나는 전혀 의심하지 않았습니다. 그러나 * 어떤 상태에서도 참조 된 객체를 수집하지는 않습니다. 액티비티에서 사용중인 객체가 해당 액티비티 내에서 호스팅 될 때 참조가 체크 아웃됩니다. 이 사실을 반대로 생각하면 참고 문헌을 제공해주십시오. 그러나, 나는 당신이 묘사하고있는 것을 전혀 만나지 않았다. –

+0

Dev SDK에서 : "활동이 중지되면 활동 객체는 메모리에 상주하며 활동이 재개 될 때 다시 호출됩니다. 콜백 메소드 중 생성 된 구성 요소를 다시 초기화 할 필요가 없습니다 재개 된 상태 "라고 말합니다. 따라서 평소와 다른 것을하지 않는 한 (물론 모든 것이 괜찮은지 확인해야하는 경우) GC에 의해 수집되는 것은 없습니다. 왜냐하면, 그 물체는 쓰레기가 아니기 때문입니다. 아직. 따라서 활동이 파괴되었는지 확인해야합니다. 위의 방법을 사용하여 다시 할 수 있습니다. –