在这种情况下,我有一个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/

10-11 17:17