释放Android内存的最佳方法

释放Android内存的最佳方法,android,memory,Android,Memory,我一直在寻找解决方案,我发现了许多不同的意见来解决我的问题 以下是我的应用程序的功能: 它在数据库中进行搜索,并将n屏幕与n图片组合在一起。每张图片都是一个ImageButton,根据数据库中存储的内容,每张图片都有自己的图像、动作等 创建的屏幕被抛出到视图翻转器中 有些物品有“儿童” 因此,如果用户单击带有“子”的ImageButton,它将搜索数据库,获取项目,用带有数据库信息的ImageButton组装新屏幕 然后,将这个(这些)新屏幕添加到查看页面,并保留来自调用方屏幕的引用,以便用户

我一直在寻找解决方案,我发现了许多不同的意见来解决我的问题

以下是我的应用程序的功能:

  • 它在数据库中进行搜索,并将
    n
    屏幕与
    n
    图片组合在一起。每张图片都是一个
    ImageButton
    ,根据数据库中存储的内容,每张图片都有自己的图像、动作等

  • 创建的屏幕被抛出到
    视图翻转器中

  • 有些物品有“儿童”

    • 因此,如果用户单击带有“子”的ImageButton,它将搜索数据库,获取项目,用带有数据库信息的ImageButton组装新屏幕
    • 然后,将这个(这些)新屏幕添加到
      查看页面
      ,并保留来自调用方屏幕的引用,以便用户可以根据需要返回调用方屏幕
  • 根据数据库,每当
    ImageButton
    有“children”时,它将执行第3项

  • 很容易看到,在初始的
    ViewFlipper
    中会有很多屏幕

  • 它在我的华硕EEE Pad变压器中完美工作。然而,如果我尝试在Galaxy S中运行它(内存不足),如果我继续浏览屏幕,它最终会崩溃(内存不足异常)


  • 在这种情况下,释放内存的最佳方法是什么?

    这可能并不容易,但如果您想节省内存,请保存视图。与其预先构建所有视图,不如只构建所需的视图,然后手动管理翻转。毕竟,您一次只需要显示一个图像,因此,请准备好该图像,以及之前和之后的图像,以便快速翻转,但不要在需要之前准备所有其他图像。

    这可能并不容易,但如果您想节省内存,请保存视图。与其预先构建所有视图,不如只构建所需的视图,然后手动管理翻转。毕竟,您一次只需要显示一张图像,所以请准备好,可能还有之前的图像和之后的图像,以便快速翻转,但不要在需要之前准备所有其他图像。

    是的,zmbq,这正是我正在做的。。。我只创建用于快速翻转的屏幕,需要从数据库中获取的所有内容都是动态创建的。不管怎么说,我想我必须清理一下浏览页面。。。我说得对吗?有更好的解决方案吗?是的,zmbq,这正是我正在做的。。。我只创建用于快速翻转的屏幕,需要从数据库中获取的所有内容都是动态创建的。不管怎么说,我想我必须清理一下浏览页面。。。我说得对吗?有更好的解决办法吗?