我正在构建一个Android应用程序,但我有一些问题 内存使用情况。
我需要和使用的大多数数据都是存储在xml字符串文件中的字符串数组。我使用数组,因为首先最大的数组最多有30个项目,其次不会有更新,删除或通过应用程序插入项目。 我创建的所有自定义适配器都遵循googles的guidlines(快速方式 - 使用holder类)
当用户在活动之间切换时,根据他所做的选择,不同的数组会加载到列表视图中。
如果不使用,android会清除每个数组分配的内存吗?我应该这样做吗?
我还使用MAT
来检查应用程序如何使用内存并检查泄漏等等。我认为一切都很好。我还使用了一些png图标/图像。
该应用程序启动时会获得5MB,当用户玩游戏时会上下移动到8.5-9MB。
提前感谢您的帮助!
答案 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