2012-02-24 193 views
0

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

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

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

如果Android没有使用,android会清除每个数组分配的内存吗?我应该那样做吗? 我也使用MAT也检查应用程序如何使用内存和检查泄漏等..我事事一切都很好。我也使用了几个PNG图标/图像。 该应用程序在启动时获得5MB,随着用户玩耍升降至8.5-9MB。

在此先感谢您的帮助!

+0

你什么,如果它不使用的意思是:

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); } 

这在这里详细描述?像它没有参考或像你的应用程序去背景? – Tim 2012-02-24 09:39:36

+0

谢谢!为快速回答..我认为我的意思是“像没有参考它”..因为第二个场景的应用程序在后台和Android需要控制.. – JcDenton86 2012-02-24 09:43:58

+0

那么,如果没有在Java中的东西的参考,发生什么事是垃圾收集器释放空间早或晚 – Tim 2012-02-24 09:46:39

回答

1

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

当您的Activity中调用了onCreate(Bundle savedInstanceState)时,如果savedInstanceState不为NULL,那么这意味着您的Activity之前已被操作系统杀死,您需要重新填充该捆绑中的字符串数组。

例如:http://developer.android.com/reference/android/app/Activity.html

+0

感谢您的快速响应..我会尝试今天下午上述,我会回来! – JcDenton86 2012-02-24 09:50:10