두 가지 간단한 작업이 있습니다. A
및 B
입니다. 사용자는 버튼을 눌러 A
에서 B
을 시작한 다음 뒤로 버튼을 눌러 A
으로 돌아갑니다.OnDestroy에서 비트 맵 다시 쓰기 - 활동을 다시 시작할 때 '재생 된 비트 맵을 사용하려고합니다'
액티비티 B
에서는 액티비티 B
에서 사용 된 일부 배경 이미지를 리사이징합니다. 내가 이해하려고 노력하는 이유는 액티비티 B
이 다시 시작될 때 '재활용 된 비트 맵을 사용하려고합니다.'입니다. 당연히 비트 맵은 onCreate() 메서드에서 다시로드 될 것입니까? 활동이 처음 시작되었을 때처럼. 여기
public class ActivityB extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.selectionpage);
}
@Override
public void onDestroy() {
ImageView iv = (ImageView) findViewById(R.id.imageView1);
((BitmapDrawable)iv.getDrawable()).getBitmap().recycle();
LinearLayout ll = (LinearLayout) findViewById(R.id.linearLayout1);
((BitmapDrawable)ll.getBackground()).getBitmap().recycle();
super.onDestroy();
}
}
내가에서 활동 B
를 실행하는 데 사용하는 코드 A
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
selectionpage.XML :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backgroundimage">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/selectionimage"/>
</LinearLayout>
것은이 부분은 관련이있을 수 . 나는 잘 모르겠다. 나는 활동 B를 시작한 후에도 파괴 된 후에도 MAT를 사용하여 메모리 힙을 분석 할 때 내 활동의 인스턴스를 볼 수 있습니다. GC 뿌리에 대한 경로는 Java.lang.Thread와 ContextImpl을 거친 것으로 보인다.
그래를 사용하십니까. 저는 바보입니다. XML 파일이 어떻게 작동하는지 몰랐습니다. 한가지주의 할 점은 여러 프로그램을로드 한 후에 메모리 오류가 발생하는 것 같아요. 일부 이미지는 더 이상 사용되지 않지만 GC는 이미지를 제거하지 않는 것 같습니다. 나는 그 (것)들에 recycle()를 요구하고있다 - 나는 GC를 그 (것)들을 즉시 청소하기 위하여보다는 오히려 기다리기 위하여 통지하기 위하여 믿는다. 어쨌든, 나는 방황하고있다. 답해 주셔서 감사합니다 – Wozza
이것은 안드로이드의 모든 버전에 해당하지 않습니다 :'안드로이드 2.3.3 (API 레벨 10) 이하에서는 비트 맵의 배경 픽셀 데이터가 네이티브 메모리에 저장됩니다. Dalvik 힙에 저장된 비트 맵 자체와는 별개입니다. 네이티브 메모리의 픽셀 데이터는 예측 가능한 방식으로 해제되지 않으므로 잠재적으로 응용 프로그램이 메모리 제한을 잠시 초과하여 충돌을 일으킬 수 있습니다. http://developer.android.com/training/displaying-bitmaps/manage-memory.html # inBitmap – ForceMagic