保存Android中方向更改的一些数据

Mic*_*Bak 5 android device-orientation orientation-changes

据我所知,您的Android活动将针对任何方向更改的新方向进行重新创建.

有没有办法在方向改变时存储/保存原始方向的一些数据?

我想存储一些位图,所以我不必在方向更改时再次加载它.

Ped*_*iro 12

在可维护性和调试方面,使用静态变量/类是一种糟糕的方法.


我一直在使用,Activity.onRetainNonConfigurationInstance但我刚刚发现这已被弃用(可能是因为蜂窝或以后). Activity.onRetainNonConfigurationInstance

使用此方法,只需调用Activity.getLastNonConfigurationInstance以检索您在中返回的相同对象onRetainNonConfigurationInstance.一定要检查null并转换到正确的类(你可以返回/获取任何类).Activity.getLastNonConfigurationInstance

伪代码中的示例用法是:

onRetainNonConfigurationInstance:
    return "I need to remember this next time";

onCreate:
    ...
    String messageToShow = null;
    Object data = getLastNonConfigurationInstance();
    if(data != null)
        messageToShow = (String)data;
    else
        messageToShow = "Nothing to show";
Run Code Online (Sandbox Code Playgroud)

因此,如果您的目标是2.xx,则可以使用该方法.否则,谷歌建议你使用Fragment.setRetainInstance.这是通过兼容包向后兼容的.

Fragment.setRetainInstance


Noa*_*oah 5

将项目保存在父活动或静态实用程序类中.

否则,您可以使用清单告诉应用程序不要破坏屏幕调整大小的活动.看看这篇文章:http://developer.android.com/guide/topics/resources/runtime-changes.html