gpt4 book ai didi

Android 棉花糖 WifiManager 泄漏 IntentReceiver

转载 作者:行者123 更新时间:2023-11-29 19:53:36 25 4
gpt4 key购买 nike

场景如下,我有一个 LoginActivity,它使用 WifiManager 来获取 IP 地址,如下所示:

WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String ipAddress = wifiManager.getConnectionInfo().getIpAddress();

注册任何接收器来接收任何 WiFi 更新。我使用 WifiManager 获取 IP 地址,仅此而已

现在当我完成登录时,我在 LoginActivity 中调用 finish() 并启动 SplashActivity 然后我在控制台看到以下登录:

LoginActivity has leaked IntentReceiver android.net.wifi.WifiManager that was originally registered here. Are you missing a call to unregisterReceiver()?

而且我只在棉花糖上得到了这个日志。这不会发生在 <6.0 设备上。同样在 marshmallow 上,该应用程序从未崩溃,但我每次都会看到此日志。

如果有人可以解释这种行为?

最佳答案

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

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

WifiManager wifi_manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);

在做了更多研究后,当您从一项 Activity 过渡到另一项 Activity 时,上下文似乎不再存在。

getApplicationContext() - Returns the context for all activities running in application.

getContext() - Returns the context view only current running activity.

因此,最好将 getApplicationContext() 用于任何应在您的应用程序生命周期内存活的内容。

关于Android 棉花糖 WifiManager 泄漏 IntentReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36857436/

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