2013-07-26 2 views
0

다음은 이야기입니다. Eclipse에서 내 앱을 실행하고 작업 관리자에서 20MB의 RAM을 사용한다고 가정 해 보겠습니다.
그런 다음 "뒤로 버튼"을 사용하여 응용 프로그램을 닫습니다.
작업 관리자를 체크인하고 내 앱이 종료되었다는 것을 처리합니다.
이제 휴대 전화에서 앱을 다시 실행하지만 이제는 32MB가 사용됩니다.
내 응용 프로그램을 닫고 다시 전화로 실행하면 45MB의 RAM이 사용되며 다시 시작할 때마다 계속됩니다.앱이 닫힐 때 메모리가 다시 채워지지 않습니다

시작할 때마다 ~ 12MB가 추가됩니다.
Eclipse에서 내 앱을 실행하면 다시 20MB로 재설정됩니다.

나는 약간의 비 정적 데이터와의 SQLiteDatabase를 저장하는 MyApp를을 사용하고 있습니다 : 나는 내 apllication BTN 다시 내 응용 프로그램을 닫아도 경우 활성 프로세스에 남아 있음을 알 수

public class MyApp extends Application { 

} 

.

답변

1

android.os.Process.killProcess(android.os.Process.myPid());을 주 활동의 onDestroy 방법으로 시도하십시오.

+0

작동하지만 작동하는 이유를 알려주십시오. – vovahost

+1

안드로이드는 가까운 간격 내에 다시 열리면 명령과 여분의 데이터가 저장되지 않도록 명령을 사용하여 애플리케이션을 빠르게 시작하기 위해 애플리케이션에 대한 일부 데이터/지침을 유지합니다. –

+2

이것은 최후의 수단으로 고려되어야합니다! 실제 문제는 메모리 누수 문제이며 해결해야합니다. 내가 이것을 사용하는 데 필요한 유일한 시간은 정적 컨텍스트 또는 원시 OpenGL 뷰가있는 사용자 정의 레이아웃 엔진입니다. – Phil

3

Eclipse 메모리 분석기 도구 (MAT)를 사용해야합니다. 이것은 분명히 메모리 누수입니다. DDMS에서 힙 덤프를 가져와 sdk의 hprof-conv 도구로 변환하고 MAT에로드해야합니다.

공식 Android 개발자 블로그에서 this blog post을 확인하십시오.

관련 문제