在这种情况下,我有一个LoginActivity
利用WifiManager
来获得IP地址,如下所示:
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String ipAddress = wifiManager.getConnectionInfo().getIpAddress();
我没有注册任何接收器来接收任何WiFi更新。我使用
WifiManager
仅获取IP地址,而没有其他任何获取。现在,当我完成登录时,我在
finish()
中调用LoginActivity
并启动SplashActivity
,这就是我在控制台中看到以下日志的时候:LoginActivity已泄露IntentReceiver android.net.wifi.WifiManager
最初是在这里注册的。您是否错过了致电
unregisterReceiver()?
而且我只在棉花糖上得到此日志。在
是否有人可以解释这种行为?
最佳答案
我有相同的错误,但仅出于某种原因在调试中运行。
添加:getApplicationContext()
为我解决了该问题。 (尽管我不确定为什么吗?)
WifiManager wifi_manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
经过更多研究后,当您从一项活动过渡到另一项活动时,上下文不再存在。
getApplicationContext()-返回在应用程序中运行的所有活动的上下文。
getContext()-仅返回上下文视图当前正在运行的活动。
因此,最好将getApplicationContext()用于应在应用程序的整个生命周期内保留的所有内容。
关于android - Android棉花糖WifiManager泄漏IntentReceiver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36857436/