After executing this line:
WifiManager man = ((WifiManager) ctx.getSystemService(Context.WIFI_SERVICE));
A thread labeled “WifiManager” will show up. In the Java source file for WifiService.java line 203:
HandlerThread wifiThread = new HandlerThread("WifiService");
wifiThread.start();
mWifiHandler = new WifiHandler(wifiThread.getLooper());
Problem is, every time our app is closed and reopened it creates a new thread, run it 5 times and you have 5 threads. Not sure if there is anyway to stop it?
EDIT
Changed to getApplicationContext to make sure the context it was accessing was consistent and all was well. I still get a thread labeled “WifiService,” but I only get one thread over multiple runs.
I believe you are creating a new WifiManager in your started/stopped
(Context) Activity.A note from Context.getSystemService()
Also from ContextImpl.java:1478 and :227
It uses a map to cache system services, so I believe if you use the same context like
Application, you wouldn’t run into this problem. I am not sure if this is the right way of solving this problem however, if having threads laying around a bigger issue for you, it may worth while.