基于this,我在Service
中启动了一个AppWidgetProvider
来监视屏幕开/关和屏幕方向的变化,并相应地更新小部件。一切正常。正在检测屏幕事件,并且小部件正在按预期进行反应。
但是...
我发现与应用程序关联的内存使用率非常高。在我的设备上,在Application Manager > Running
我的应用程序被标记为具有“1个进程和1个服务”,并且服务在服务中正确列出,并且应用程序在进程中列出。
但与我的应用程序相关的内存非常高。对于我的设备,它是37MB。但对于至少一个用户来说,它接近300MB!
如上所述不使用此Service
时,内存使用率似乎没有任何问题,至少不是我可以从应用程序管理器中判断出来的。
我是否有任何方法可以实现长时间运行的Service
,这会导致天文数据占用率过高?如果AppWidgetProvider
和Service
之间存在分隔,那么与常规窗口小部件更新相关的任何内存使用情况(例如,使用位图填充RemoteViews
)都不会持续存在?
即使您在应用程序管理器中停止Service
,然后立即启动它(没有加载小部件更新),内存使用率也会直接恢复到以前的状态。
关于如何继续,我有点迷失...在Android中有点内存管理的菜鸟......
答案 0 :(得分:1)
看起来你正在对bitmap进行繁重的操作.Bitmaps会占用大量内存。在重新初始化或创建位图的新实例之前,你需要回收ie recycle()
旧位图。
if(bitmap!=null){
//do ur operation on bitmap
..............
.....................
bitmap.recycle();
}
请查看有关位图内存管理的详细文档。Displaying Bitmaps Efficiently