我对Dalvik如何处理位图数据有疑问。
说我有一个课 PictureFrame :
public final class PictureFrame {
private final Bitmap mBitmap;
public PictureFrame(final Bitmap pBitmap) {
this.mBitmap = pBitmap; // Loaded externally, recycle() has not been called
}
public final Bitmap getBitmap() {
return this.mBitmap;
}
}
我是否可以相信任何对getBitmap()
的调用都会安全地返回一张不会被垃圾收集的图片?此外,如果对getBitmap()
的调用很少,那么使用 PictureFrame 的许多实例的应用程序会有效吗?或者,仅仅保留对位图在磁盘上的位置的引用,并且每次调用getBitmap()
每次都执行文件I / O操作更合理吗?
答案 0 :(得分:3)
假设您没有将null传递给构造函数,getBitmap()
将永远不会返回null。
但是,如果您确实在位图上调用recycle()
,则后续尝试使用该位图将导致IllegalStateException
。
答案 1 :(得分:2)
除了@David Xu回答,我还建议使用@NonNull注释。这样就可以通过编译时测试保护自己免受空指针异常的影响。
public PictureFrame(@NonNull final Bitmap pBitmap) {
this.mBitmap = pBitmap; // Loaded externally, recycle() has not been called
}