首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索NsdManager总是泄漏活动

检索NsdManager总是泄漏活动
EN

Stack Overflow用户
提问于 2020-11-18 20:17:47
回答 1查看 66关注 0票数 2

在分析我的应用程序时,我发现,使用

代码语言:javascript
复制
nsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);  // LEAKS!

正在泄露活动,而

代码语言:javascript
复制
nsdManager = (NsdManager) getApplicationContext().getSystemService(Context.NSD_SERVICE);

不会的。我制作了一个小型测试应用程序,它只会使用活动上下文检索NsdManager,但它仍然在泄漏活动。这是个虫子吗?我真的必须一直使用应用程序上下文吗?

设备:模拟器(Android11,API 30,x86)

EN

回答 1

Stack Overflow用户

发布于 2022-06-28 16:06:08

此问题与获取WIFI_SERVICE时出现的内存泄漏问题类似。

在做时:

代码语言:javascript
复制
activity.getSystemService(Context.WIFI_SERVICE);

显示了以下警告。

代码语言:javascript
复制
The WIFI_SERVICE must be looked up on the 
Application context or memory will leak on
devices < Android N. Try changing activity
to activity.getApplicationContext().

虽然在使用NSD_SERVICE时没有林特警告,但由于我看到内存泄漏引用了NsdManager,所以使用:

代码语言:javascript
复制
activity.getSystemService(Context.NSD_SERVICE);

我认为使用:

代码语言:javascript
复制
activity.getApplicationContext().getSystemService(Context.NSD_SERVICE);

似乎是正确的行动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64900713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档