在处理我的Android应用程序时,我最近检查了一个任务管理器,看看我的应用程序的内存是如何运行的。
现在,我的应用程序有两个广告横幅由AdMob服务执行,然后是Google地图的界面片段。除了我之外,我还有一个菜单,其中我使用了一个容器,我在Java代码中向其添加了视图。我比列表视图更喜欢它,因为它更轻,更容易构建我想要的视图(我可以在添加/删除视图时使用Androids本机动画系统)。
正在添加到容器的视图由基于条件的循环结构添加。它们的界面结构中的视图也有一个小的图像视图,利用一个小的局部可绘制。
所有这些都以某种方式累加到我的应用程序44.8 MB的内存,这似乎从以前的开发数字异常高。这也是我第一次决定使用容器通过循环添加视图,而不是使用list-view方法添加适配器。
任何人都可以直接告诉我为什么我的应用程序会占用大量内存吗?这是我第一次使用所有这些组件:AdMob横幅,Google地图和添加了视图的容器。
我的LogCat没有显示任何低效率的警告。只是好奇,看看我做错了什么。如果有人有任何想法,我愿意提供任何源代码。
答案 0 :(得分:6)
我认为44.8Mb对于现代Android应用来说非常正常。我的赌注是谷歌地图,因为它是非常耗费资源的库(无论是CPU还是内存)。无论如何,您可以尝试从应用程序中顺序删除每个组件,并查看它如何影响内存占用。
答案 1 :(得分:5)
安德烈已经说过,对于Android应用来说44.8Mb并不算太多。但您可以使用DDMS跟踪分配和堆更新,以确切地看到占用此内存。请参阅:https://developer.android.com/tools/debugging/debugging-memory.html
此外,我建议使用带有适配器的ListView
,因为ListView
中的项目可以回收,这可以提高性能(参见this教程)。