gpt4 book ai didi

android - AppWidgetProvider中的屏幕监控服务 : high memory usage

转载 作者:行者123 更新时间:2023-11-29 01:22:57 24 4
gpt4 key购买 nike

基于 this ,我实现了一个在 AppWidgetProvider 中启动的 Service,它监视屏幕开/关和屏幕方向的变化,并相应地更新小部件。一切正常。正在检测屏幕事件,并且小部件正在按预期使用react。

但是...

我发现与该应用相关的内存使用率非常高。在我的设备上,在 Application Manager > Running 中,我的应用被标记为具有“1 个进程和 1 个服务”,并且该服务正确地列在服务中,而该应用则列在进程中。

但是与我的应用相关的内存非常高。对于我的设备,它是 37MB。但是对于至少一位用户来说,它接近 300MB!

当没有像上面那样使用这个服务时,似乎没有任何高内存使用问题,至少我可以从应用程序管理器中看出这一点。

在我实现长期运行的 Service 的过程中,有什么东西会导致天文数字般的高内存使用率吗? AppWidgetProviderService 之间是否应该分离,以便与常规小部件更新相关的任何内存使用(例如使用位图填充 RemoteViews)不坚持?

事实是,即使您在 Application Manager 中停止 Service,然后立即启动它(没有加载小部件更新),内存使用量也会直接恢复到之前的水平。

我对如何进行有点迷茫......我对 Android 中的内存管理有点菜鸟......

最佳答案

看起来你正在对位图进行繁重的操作。位图占用了大量内存。你需要在重新初始化或创建新的位图实例之前回收旧位图,即 recycle()位图。

if(bitmap!=null){
//do ur operation on bitmap
..............
.....................
bitmap.recycle();
}

请阅读有关位图内存管理的详细文档。 Displaying Bitmaps Efficiently

关于android - AppWidgetProvider中的屏幕监控服务 : high memory usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com