我正在做这个应用程序,我做了一个接入点扫描,以获取所有AP的信号强度值..我想让扫描一秒钟一个接一个.. 现在我正在通过以下方式实现这一点:
Runnable t = new Runnable() { public void run() { Log.i(TAG3, "startedScan"); wifiManager.startScan(); try { handleScanResults(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mHandler.postDelayed( this, 600 ); } };
protected void setTimer() { mHandler.post(T); }
正如你所看到的那样,每600毫秒就会完成这个,虽然这个计时器的问题是“我猜!”每次运行时都会创建另一个线程。 我怎么能解决这个问题,随着时间的推移,应用程序开始变得沉重,我无法与它进行交互。 请帮助!
答案 0 :(得分:0)
startScan()不会触发一次,它会在一段时间内返回结果(这是我的经验)。
所以最好的方案是: - 开始扫描() - 等待结果,我建议一定的时间 - 然后再次调用startScan()
每个startScan()之间的600毫秒对于android来说太多了,我不认为第一个结果甚至在如此短的时间内返回(?)它是为了什么?你想确定一个有信号强度的位置,或者为什么你需要每秒调用它?
每5或10个应足以连续获得结果