在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被移除后才会释放?
解决方案 »
- android和后台数据库之间的通讯问题
- Wifi-Direct是加载sta模式的驱动还是ap模式的驱动
- Android程序实现 将成绩查询系统网站登录后的 内容解析下来显示在手机上。。请高人指点如何实现?
- 什么时候使用消息循环
- 实现IP 互联网和3G网视频互通的最基本条件是什么?这属于增值服务么?
- 在源码中,“设置”里面多加一个选项,在哪里添加?就“通话设置”,“应用程序”同级的在源码哪里添加?
- 请教大家一个关于游戏中使用声音界面的问题
- 在TimerTask中还需要new Thread么?
- Android客户端添加关注微信账号的功能
- 百度定位多次定位出现崩溃,这种情况出现在个别机型
- 从一个Activity中打开另一个Activity时出错。
- 怎么让WebView的滚动条消失?
而Bitmap类中的finalize方法则调用了Bitmap.cpp中的Bitmap_destructor方法,
这两个native方法都可以释放到Bitmap在C层申请的内存,唯一的不同是recycle方法会把一些相关的引用计数置0.
垃圾回收的时机具体要看虚拟机的实现,有的虚拟机直到内存实在满足不了要求才会释放一些内存出来
这样啊……那如果高频率的新建createBitmap和recycle的话,在真机上是不是一定会溢出?例如把createBitmap和recycle放在MotionEvent.ACTION_MOVE里面 ( ・ω・ )