我有一个应用程序,它使用一个活动来启动前台服务,该应用程序打算在没有活动的情况下使用,并在离开应用程序后保持不变。也可以在引导时启动服务。
我试图减少服务使用的内存量,注意到当服务从活动启动时,使用的内存在30mb到80mb之间,在android studio的内存探查器中,它显示有一个内存泄漏和主要活动的应用程序(启动该服务)仍然是引用,即使它说它已被摧毁。如果使用广播接收器从引导启动服务,则不会引用该活动,并且使用的内存约为10mb。
我尝试过使用leakcanary,但它没有发现任何泄漏,而内存配置文件明确给出了活动的泄漏警告。我找不到使它留在记忆中的参考文献。
我试着用以下方法启动服务:
serviceintent = new Intent(getApplicationContext(), MyService.class);
getApplicationContext().startService(serviceintent);
但结果是一样的。
这家伙也有同样的问题,用不同的方法解决了:
我也读过其他人说android的行为很正常,而且这个活动是附加在进程上的,但是android studio说这是一个漏洞?为什么?即使为了释放内存而在我的手机上乱搞了一番,它的内存也降到了26mb,但活动还是被引用的,而且6,7mb总是用来显示图形的,而它的0mb是从启动时启动的。
有没有可能在不使用多个进程的情况下修复这个问题,就像从引导启动时一样?我如何知道活动在哪里被引用?
警告截图
暂无答案!
目前还没有任何答案,快来回答吧!