2012-06-26 3 views
0

앱을 실행하면 첫 번째 활동에서 힙 크기가 10MB로 증가하고 다음 활동으로 넘어 가면 힙 크기가 37MB로 증가합니다. 이 두 번째 활동에서 버튼을 클릭 할 때 bitmap.recycle()으로 메모리를 릴리즈 할 예정이므로 특정 버튼을 클릭하면 힙 크기가 32MB로 줄어 듭니다. 이제이 두 번째 활동을 끝내라고하면 내 메모리 크기가 16MB로 줄어들어 첫 번째 활동의 원래 메모리 크기가 10MB 였기 때문에 스택에서 완전히 제거되지 않는다는 힌트를 제공합니다.완료되면 스택에서 작업을 완전히 제거하는 방법?

이제 두 번째 활동으로 돌아 가면 다음과 같은 크래시가 표시되어 버튼 클릭으로 릴리스 한 비트 맵이 다시 만들어지지 않습니다. 사용자가 해당 활동을 입력 할 때마다 두 번째 활동에서 동일한 onCreate 메소드를 사용하므로 xml에서 비트 맵을 다시 가져와야합니다.

06-26 08:45:39.636: E/AndroidRuntime(6265): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected] 

내가 여기에 누락 되었습니까? 일단 완료되면 스택에서 활동을 완전히 제거하는 방법은 무엇입니까?

나는 활동 1에서 android:launchMode="singleTop"android:clearTaskOnLaunch="true"을, 활동 2에서 android:launchMode="singleTop" android:noHistory="true"을 사용해 보았습니다.

모든 의견을 환영합니다.

+1

활동에 대해 더 많은 코드가 필요하다고 생각하십시오. .recycle()을 사용하지 않을 것입니다. 어딘가에서 컨텍스트 (활동)에 대한 참조를 잃지 않도록하십시오. – Blundell

+0

두 번째 활동을 재사용 할 계획이라면 왜 재활용하고 있습니까? –

+0

두 번째 액티비티를 스택에서 완전히 제거한 후에 다시 finish()를 호출하고 다시 호출 할 때 다시 작성하기를 원합니다. 이것은 앱에 매우 중요합니다. –

답변

1

시스템의 응용 프로그램 스택에서 응용 프로그램을 제거하려면 프로세스를 종료 할 수 있습니다. 어쩌면이게 도움이 될까요?

/************************************************************************************** 
* Removes this application from the stack by killing it's process. 
**************************************************************************************/ 
public static final void killProcess() 
{ 
    //get current process id 
    int processId = android.os.Process.myPid(); 

    //tell android to kill this process 
    android.os.Process.killProcess(processId); 
} 
+0

...? 이 권리를 읽으면 전체 앱을 죽입니다. 아마 당신이 그 활동 중 하나로부터 기억을 되찾기를 원할 때하는 일은 아닐 것입니다. – cHao

+0

예, 프로세스가 종료됩니다. 일단 작업이 끝나면 그 작업의 메모리를 제거하고 다음에 호출 할 때 작업을 다시 만들고 싶습니다. 이 의도는 –

1

마무리가들의 OnDestroy도 전화를받을 것이며, 전체 활동이 삭제되지만에도 수동으로 무언가를 해보고 싶어하지만, 당신은 분명 스택을 시도 할 수 또는 가비지 컬렉터를 호출 할 수 있습니다 전화를받을되면. 참조 용 :

// For stack clear 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

// For calling GC 
System.runFinalization(); 
System.exit(0); 
+0

입니까? –

+0

이것은 도움이되지 않습니다 .. –

관련 문제