当前位置: 首页 > 知识库问答 >
问题:

Android BitmapDrawable回收/再利用

江高飞
2023-03-14

在下面的代码中,我有两个位图(我省略了创建它们的代码,因为这与我的问题无关),我的布局中还有一个ImageView。我使ImageView将第一个位图显示为drawable,然后使它将第二个位图再次显示为drawable。

我知道位图可以被回收,我的问题与“新的BitmapDrawable”部分有关,因为我不知道什么是BitmapDrawable。它仅仅是一个引用,还是每次创建一个引用时都会耗尽内存?换句话说,在我为Bitmap2创建另一个BitmapDrawable之前,是否需要删除/回收我为bitmap1创建的BitmapDrawable?

多谢了。

Bitmap bitmap1,bitmap2;

...assume bitmap1 and bitmap2 contain valid bitmaps...

// get imageview
ImageView iv = (ImageView)findViewById(R.id.my_imageview);

// make the imageview display bitmap1
iv.setImageDrawable(new BitmapDrawable(getResources(),bitmap1));        

// now make the imageview display bitmap2
iv.setImageDrawable(new BitmapDrawable(getResources(),bitmap2));        

共有1个答案

魏俊茂
2023-03-14

您应该保留位图,只要您需要它们。创建新位图的成本很高。如果没有足够的内存,那么GC将启动,而您的应用程序将在此期间停顿。

有关高效显示位图的信息,请参阅以下内容:http://developer.android.com/training/displaying-bitmaps/index.html

 类似资料:
  • 为主机、硬盘、镜像资源提供回收站功能。避免资源误删除导致数据丢失。 为了避免因为删除误操作而导致的数据丢失风险,云管平台提供了回收站功能。回收站用于临时存放用户删除的主机(包括虚拟机和裸金属)、硬盘、镜像文件。回收站功能仅支持管理员用户使用,普通用户不可见。 虚拟机 主机回收站用于存放用户删除的虚拟机和裸金属文件。 硬盘 硬盘回收站用于存放用户删除的硬盘文件。 镜像 镜像回收站用于存放用户删除的镜

  •       已删除的文件/文件夹/团队空间将统一进入到回收站,可以从回收站对文件进行恢复或者彻底删除。

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”-> “回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 。 在对话窗口中确认删除。 移除全部对象 按住 Control 键并点按对象选项卡的任意位置,然后在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象

  • 问题内容: Linux中是否有关于回收使用过的PID的政策?我的意思是,如果使用了PId,将在多长时间后再次使用它? 问题答案: 随着新进程的加入,PID将增加到与系统有关的限制,然后回绕。在这种回绕发生之前,内核将不会重用PID。 限制(最大pids)为。该手册说: (从Linux 2.5.34开始) 该文件指定 PID环绕 的值(即,该文件中的值比最大PID大1)。此文件的默认值导致PID范围