在Activity里面建立的Bitmap,在执行Bitmap.recycle()后,Bitmap何时会被释放例如
Bitmap bitmap = Bitmap.createBitmap(width, height, config);
imageView.setImageBitmap(bitmap);imageView.setOnTouchListener(new ImageView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent e) {
Bitmap newBitmap = Bitmap.createBitmap(width, height, config);
imageView.setImageBitmap(newBitmap);
bitmap.recycle();
}
});这个bitmap会在何时被释放呢?是view被刷新时释放的还是view被移除后才会释放?
Bitmap bitmap = Bitmap.createBitmap(width, height, config);
imageView.setImageBitmap(bitmap);imageView.setOnTouchListener(new ImageView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent e) {
Bitmap newBitmap = Bitmap.createBitmap(width, height, config);
imageView.setImageBitmap(newBitmap);
bitmap.recycle();
}
});这个bitmap会在何时被释放呢?是view被刷新时释放的还是view被移除后才会释放?
解决方案 »
- 100分 Android下GPIO模拟串口
- Android中怎么实现打开短信时要求先输入密码
- 网易android客户端开发授权正确API调用出错
- EditText如何实现类似QQ聊天文本框里面的动态表情显示?
- WebView真机无法显示gif图片的问题
- TextView居中问题
- 百度地图不能启动定位
- Android开发 天气预报信息获得
- android 8以后framelayout问题
- IDE internal error occured.Click to see details and submit a bug report.
- 从一个Activity中打开另一个Activity时出错。
- 怎么让WebView的滚动条消失?
而Bitmap类中的finalize方法则调用了Bitmap.cpp中的Bitmap_destructor方法,
这两个native方法都可以释放到Bitmap在C层申请的内存,唯一的不同是recycle方法会把一些相关的引用计数置0.
垃圾回收的时机具体要看虚拟机的实现,有的虚拟机直到内存实在满足不了要求才会释放一些内存出来
这样啊……那如果高频率的新建createBitmap和recycle的话,在真机上是不是一定会溢出?例如把createBitmap和recycle放在MotionEvent.ACTION_MOVE里面 ( ・ω・ )