2010-06-11 38 views
7

Tôi có hoạt động rất nhỏ phải hiển thị hình ảnh.Android setImageURI hết bộ nhớ lỗi

Nếu hình ảnh không phải là rất nhỏ (ví dụ 1,12 Mb 2560x1920), nó tạo ra bộ nhớ trên hướng màn hình thay đổi. Tôi đã thử getDrawable.setCallback (null) nhưng không may mắn.

Tôi đang ở đâu sai?

public class Fullscreen extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    System.gc(); 
    setContentView(R.layout.fullscreen); 
    ImageView imageView = (ImageView) findViewById(R.id.full_screen_image); 
    long imageId = 2; 
    imageView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + imageId)); 
    } 
} 

Trả lời

4

Tiêu thụ ít bộ nhớ hơn và giảm kích cỡ (xem tài liệu về BitmapOptions # inSampleSize) hình ảnh.

+3

mẫu mã ở đây http : //stackoverflow.com/questions/477572/823966#823966 – Fedor

11

Cố gắng thêm video này vào phương pháp onDestroy của bạn:

ImageView imageView = (ImageView) findViewById(R.id.full_screen_image); 
BitmapDrawable bd = (BitmapDrawable)imageView.getDrawable(); 
bd.getBitmap().recycle(); 
imageView.setImageBitmap(null); 

Nó sẽ tái chế bitmap sử dụng bên trong ImageView của bạn.

+3

bài đăng tuyệt vời nhưng bạn có thể thêm bắt buộc 'if! = null' kiểm tra bd :) – Ron

+0

Không cần thiết nếu bạn luôn đặt drawable trong onCreate;) – gingo

+0

tái chế có vẻ là một phương pháp rất cũ. Có cần thiết trên Android 4.0 không? – Jacky

1

Bạn cũng có thể sử dụng một cái gì đó như thế này:

 File picture = new File("path_to_image"); 
     if (picture.exists()) { 
      ImageView imageView = (ImageView)findViewById(R.id.imageView); 
      BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inSampleSize = 2; 
      Bitmap myBitmap = BitmapFactory.decodeFile(picture.getAbsolutePath(), options); 
      imageView.setImageBitmap(myBitmap); 
     } 

đọc vào liên kết sau để biết thêm thông tin về các tùy chọn BitmapFactory (đặc biệt là inSampleSize, kiểm soát mức độ của mẫu phụ): http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html

Các vấn đề liên quan