Ứng dụng của tôi có mã này đoạn mãLàm thế nào để tránh con trỏ null trong View.getDrawingCache()?
mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());
đâu mView là một thể hiện của một lớp con tùy chỉnh của FrameLayout. Ứng dụng này đã hoạt động tốt trong 6 tháng nay với hàng nghìn người dùng. Gần đây tôi có vài báo cáo (có thể từ cùng một người dùng nhưng tôi không thể xác nhận) về một con trỏ null được chuyển tới createBitmap(). Tôi không biết phiên bản phần cứng hoặc phiên bản Android nào người dùng sử dụng.
Điều gì có thể khiến getDrawingCache() trả lại giá trị mặc dù tôi đã bật bộ nhớ cache ngay trước nó? Có liên quan đến tăng tốc phần cứng trong điện thoại mới không? Có phải vì ram không đủ cho bitmap? Còn gì nữa không? Nó có thể được ngăn ngừa không?
Chỉnh sửa: Tôi tìm thấy giải pháp này tại đây http://tinyurl.com/7yranvj. Đây có phải là cách giải quyết hợp lý không?
mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);