그래서 이미지에 맞춤 번호 타일을 사용하고 있습니다. 이미지는 자원으로 저장됩니다. 나는 메모리 누수를 추적 해왔고, 내가 사용하기 위해이 이미지들을 저장하는 방법이 용의주하다는 것을 믿을만한 원인이있다. 현재, 내가이 일을 해요 : I 열고 반복이 응용 프로그램을 종료하면 무슨 일이 일어날 지단기간에 사용할 이미지를 저장하는 모범 사례
private void loadImageList()
{
Log.d(TAG,"Reloading List "+imageList);
if (imageList==null || imageList.size()<10)
{
imageList=new ArrayList<Bitmap>(10);
imageList.add(0,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number0));
imageList.add(1,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number1));
imageList.add(2,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number2));
imageList.add(3,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number3));
imageList.add(4,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number4));
imageList.add(5,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number5));
imageList.add(6,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number6));
imageList.add(7,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number7));
imageList.add(8,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number8));
imageList.add(9,BitmapFactory.decodeResource(getResources(), R.drawable.ant_number9));
}
}
public void onStart()
{
super.onStart();
loadImageList();
}
는, 시스템은 ImageList
에 이미지를 추가 할 수있는 메모리가 충분하지 않습니다. 이렇게 버튼의 이미지를 설정하고 있습니다. (물론 객체 ImageButton을 사용합니다.) 나는 응용 프로그램이 스레드 것을 추가해야하고,이 호출 내가 onStop()
명령에 이미지를 삭제하려고했습니다 runOnUiThread(Runnable)
ImageButton.setImageBitmap(imageList.get(current_var));
에 존재하지만, 스레드가 이미지를 할당하려고 할 때 때때로 충돌의 원인이됩니다 짐승의 스레드 특성으로 인해 버튼에 메모리에 저장됩니다.
그래서 메모리 누수가 발생하지 않는 이미지를로드 할 수있는 더 좋은 방법이 있습니까?