Android内存使用情况

时间:2012-02-24 09:31:33

标签: android arrays string

我正在构建一个Android应用程序,但我有一些问题 内存使用情况

我需要和使用的大多数数据都是存储在xml字符串文件中的字符串数组。我使用数组,因为首先最大的数组最多有30个项目,其次不会有更新,删除或通过应用程序插入项目。 我创建的所有自定义适配器都遵循googles的guidlines(快速方式 - 使用holder类)

当用户在活动之间切换时,根据他所做的选择,不同的数组会加载到列表视图中。

如果不使用,android会清除每个数组分配的内存吗?我应该这样做吗? 我还使用MAT来检查应用程序如何使用内存并检查泄漏等等。我认为一切都很好。我还使用了一些png图标/图像。 该应用程序启动时会获得5MB,当用户玩游戏时会上下移动到8.5-9MB。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果需要内存,Android操作系统可能会在堆栈中杀死你的活动(没有焦点)。以这种方式杀死Activity时,将调用onSaveInstanceState(Bundle outState)。你应该在这里保存你的字符串数组。

在Activity中调用onCreate(Bundle savedInstanceState)时,如果savedInstanceState不为NULL,则表示您的Activity先前被操作系统杀死,您需要从该包中重新填充字符串数组。

例如:

String [] stringArray;
...

protected void onCreate(Bundle savedInstanceState)
{
    if (savedInstanceState != null)
    {
        stringArray = savedInstanceState.getStringArray("some_key");
    }
}

protected void onSaveInstanceState (Bundle outState)
{
    super.onSaveInstanceState(outState);
    outState.putStringArray("some_key", stringArray);
}

这里有更详细的描述:http://developer.android.com/reference/android/app/Activity.html