首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓棉花糖WifiManager IntentReceiver泄漏

安卓棉花糖WifiManager IntentReceiver泄漏
EN

Stack Overflow用户
提问于 2016-04-26 06:56:53
回答 1查看 748关注 0票数 1

下面是一个LoginActivity,它利用WifiManager获得IP地址,如下所示:

代码语言:javascript
复制
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String ipAddress = wifiManager.getConnectionInfo().getIpAddress();

I注册任何接收者以接收WiFi更新。我使用WifiManager只获取IP地址,而不获取其他

现在,当我完成登录时,我在LoginActivity中调用LoginActivity并启动SplashActivity,这时我在控制台中看到了以下日志:

LoginActivity泄露了最初在这里注册的IntentReceiver android.net.wifi.WifiManager。你错过了打给unregisterReceiver()的电话吗?

我得到的日志只在棉花糖上。这种情况永远不会发生在<6.0设备上。同样在棉花糖上,这个应用程序从未崩溃,但我每次都会看到这个日志。

如果有人能解释这种行为呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-15 06:00:31

我也有相同的错误,但只有在调试中运行时,出于某种原因。

补充:getApplicationContext()为我解决了这个问题。(虽然我不完全确定为什么?)

代码语言:javascript
复制
WifiManager wifi_manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

在做了更多的研究之后,看起来当你从一个活动过渡到另一个活动时,上下文就不再存在了。

getApplicationContext() -返回在应用程序中运行的所有活动的上下文。 getContext() -只返回当前正在运行的活动的上下文视图。

因此,最好使用getApplicationContext()来处理任何应该在应用程序生命周期内生存的东西。

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

https://stackoverflow.com/questions/36857436

复制
相关文章

相似问题

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