扫描周围的wifi热点,代码如下,我希望它能每隔10分钟扫描一次,是不是用Thread.Sleep()方法呢?
具体怎么用能给我讲一下吗,请大家帮帮忙,谢谢了
package com.example.wifitest1;import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends Activity {
private TextView tv;
private Button btn;
// wifi管理器
private WifiManager wifimanager;
// 扫描结果
private ScanResult result;
// 扫描结果列表
private List<ScanResult> scanlist; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
startScan();
printList();
}
// 打印出扫描的wifi
private void printList() {
// 定义一个可变的字符串
StringBuilder sb = new StringBuilder(); if (scanlist != null) {
for (int i = 0; i < scanlist.size(); i++) {
result = scanlist.get(i);
sb.append(result.toString()).append("\n");
}
tv.setText(sb.toString());
}
}
// 开始扫描
private void startScan() {
if (!wifimanager.isWifiEnabled()) {
wifimanager.setWifiEnabled(true);
}
wifimanager.saveConfiguration();
scanlist = wifimanager.getScanResults();
}
// 初始化
private void init() {
wifimanager = (WifiManager)MainActivity.this.getSystemService(Context.WIFI_SERVICE);
tv = (TextView) findViewById(R.id.textView1);
btn = (Button) findViewById(R.id.button1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}}

解决方案 »

  1.   

    只要你Activity没有被关闭,你可以用一个Thread,通过sleep或者wait的方式,或者sleep的方式:        new Thread(new Runnable()
            {
            @Override
            public void run()
            {
                while(true)
               {
                 try
                 {
                 Thread.sleep(600000); //延迟10分钟
                 }
                 catch (InterruptedException e)
                 {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
                 }
                
                 //执行扫描热点
               }
            }
            }).start();
    [code]wait的方式:
    [code=Java]
            new Thread(new Runnable()
            {
            @Override
            public void run()
            {
                while(true)
               {
                 synchronized(this)
    {
        try
        {
    wait(600000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
                
                 //执行扫描热点
               }
            }
            }).start();
      

  2.   

    用Service吧
    Activity不在最前面参与人交互时会被系统kill掉
    设置了定时也没用
      

  3.   

    Service具体怎么用?线程间隔时间吗?