0

我有一个应用程序,它可以动态生成 6 到 100 个小位图,供用户在给定会话中在屏幕上移动。我目前在其中生成它们onCreate并将它们存储到 sd 卡中,以便在改变方向后我可以将它们从外部存储中取出并再次显示它们。但是,这需要时间(加载),我想在生命周期更改之间保留位图引用,以便更快地访问。

我的问题是,有没有更好的地方来存储我生成的位图?我正在考虑在我的基本活动中创建一个静态存储库,只有在应用程序完全从内存中删除时才需要重新加载(关闭、其他应用程序需要资源、30 分钟重启等)。

理想情况下,我希望用户能够返回到标题屏幕,单击“恢复”按钮,然后onCreate我就可以访问那些驻留的位图引用,而不必再次从存储中加载它们。出于这个原因,我认为这不是Activity.onRetainNonConfigurationInstance我需要的。

或者,有没有比我正在做的或我描述的计划更好的方法来处理多个生成的位图?

4

1 回答 1

5

一定要查看 Romain Guy 的关于在方向更改时保留生成的位图的博客文章。这听起来像是一个几乎相同的案例。它的要点是,您可以使用onRetainNonConfigurationInstance/getLastNonConfigurationInstance在与方向相关的活动破坏中传递/接收任意对象。但是,这不会帮助您退出然后重新开始活动。

你也可以将位图塞进一个静态缓存类对象(可能是应用程序类上的软引用哈希映射),但要小心不要存储可绘制对象或视图,因为它们引用包含它们的 Activity会导致内存泄漏。这将在整个应用程序的生命周期中持续存在,但如果可能的话,我会避免这种情况,因为任何全局状态都可能导致丑陋的问题,并且很难找到引用 Activity 实例的内存泄漏。

于 2010-06-15T17:29:50.740 回答