view.setDrawingCacheEnabled(drawingCacheEnabled); view.buildDrawingCache(drawingCacheEnabled); final Bitmap drawingCache = view.getDrawingCache(); Bitmap bitmap; if (drawingCache ! = null) { bitmap = Bitmap.createBitmap(drawingCache); view.setDrawingCacheEnabled(false
2内存泄露后的挽救措施 Activity泄漏会导致该Activity引用到的Bitmap、DrawingCache等无法释放,对内存造成大的压力,挽救措施是指对于已泄漏Activity,尝试回收其持有的资源 做法也非常简单,在Activity onDestory时候从view的rootview开始,递归释放所有子view涉及的图片,背景,DrawingCache,监听器等等资源,让Activity成为一个不占资源的空壳
如果这里指的是应用访问自己的绘图缓存 (DrawingCache),则不需要任何特殊权限。 Q 13: 文件存储演讲里提到的下个版本预览,是指 Android 10 的下个小版本吗?
首先确保控件的drawingCache被启用,然后创建一个与控件大小相同的Bitmap,并使用Canvas将控件的内容绘制到这个Bitmap上。
通过兜底回收内存 Activity泄漏会导致该Activity引用到的Bitmap、DrawingCache等无法释放,对内存造成大的压力,兜底回收是指对于已泄漏Activity,尝试回收其持有的资源, 做法也非常简单,在Activity onDestory时候从view的rootview开始,递归释放所有子view涉及的图片,背景,DrawingCache,监听器等等资源,让Activity成为一个不占资源的空壳
而采用stackoverflow上消去drawingcache 的方法没有作用: https://www.google.com.sg/url?
surfaceView不是宽高全屏的,只是中间一部分,而且给surfaceView设置的背景图片肯定要和整个布局的背景重合,可以先获取背景视图的截图,然后在这里面裁剪出surfaceView所在区域 //启用DrawingCache jinyunView.getWidth(), jinyunView.getHeight()); //bitmap2传给surfaceView jinyunView.setBitmapBg(bitmap2); //关闭DrawingCache
一般截图会用到,这里的设置drawingcache,可能是在重绘时不需要重新计算bitmap的宽高等,能加快dispatchDraw的速度,但开启drawingcache,肯定也会耗应用的内存,所以也慎用
Bitmap,避免重复创建 Bitmap,退出界面及时释放掉资源(Bitmap、动画、播放器等等资源)内存回收兜底策略,当 Activity 或者 Fragment 泄露时,与之相关联的动画、Bitmap、 DrawingCache
6、Activity 的兜底内存回收策略 在 Activity 的 onDestory 中递归释放其引用到的 Bitmap、DrawingCache 等资源,以降低发生内存泄漏时对应用内存的压力。