Android 代码不是每隔几秒钟刷新一次

Android 代码不是每隔几秒钟刷新一次,android,android-intent,android-wifi,signal-strength,Android,Android Intent,Android Wifi,Signal Strength,我试图从wifi中找到信号强度。我想采集5个信号强度样本。所以,我保留了一个计时器,它可以帮助我使代码每秒运行一次。我编写的代码如下所示 我得到的结果是: 被叫0 被叫1 被叫2 被叫3 被叫4 我没有得到sb(我使用的字符串生成器)值 如果我从onreceive中删除内容并将其保留在方法之外,则会得到信号强度值。但它并不是每秒钟更新一次 public class MainActivity extends Activity { protected static f

我试图从wifi中找到信号强度。我想采集5个信号强度样本。所以,我保留了一个计时器,它可以帮助我使代码每秒运行一次。我编写的代码如下所示

我得到的结果是: 被叫0

被叫1

被叫2

被叫3

被叫4

我没有得到sb(我使用的字符串生成器)值

如果我从onreceive中删除内容并将其保留在方法之外,则会得到信号强度值。但它并不是每秒钟更新一次

  public class MainActivity extends Activity {  
            protected static final long TIME_DELAY = 1000;
            TextView mTextView;

            Handler handler=new Handler();  
            int count =0; String data ="";

            private static final IntentFilter FILTER = new IntentFilter(
                    WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                mTextView = (TextView) findViewById(R.id.text_id);

                handler.post(updateTextRunnable);

            }

      Runnable updateTextRunnable = new Runnable() {
                public void run() {
                    if (count < 5) {
                        final StringBuilder sb = new StringBuilder();

                        final WifiManager mainWifiObj;
                        mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);                 
                        class WifiScanReceiver extends BroadcastReceiver {
                        //BroadcastReceiver WifiScanReceiver = new BroadcastReceiver() {
                            public void onReceive(Context c, Intent intent) {
                                 List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
                                 for (ScanResult result : wifiScanList) {
                                    if (result.SSID.equals("DAL-WPA2")) {
                                        sb.append(""+result.level);
                                    }
                                    if (result.SSID.equals("DAL")) {
                                        sb.append(""+result.level);
                                    }
                                    if (result.SSID.equals("eduroam")) {
                                        sb.append(""+result.level);
                                    }                               

                                }

                            }
                        }
                        WifiScanReceiver wifiReciever = new WifiScanReceiver();
                        registerReceiver(wifiReciever, new IntentFilter(
                                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));  
                        mTextView.setText("getting called " +count + sb);
                        count++; 
                    } else {
                    }               
                        //----------------code here to send values to java server---
                          handler.postDelayed(this, TIME_DELAY);
                            }
                    };
public类MainActivity扩展活动{
受保护静态最终长时间延迟=1000;
文本视图mTextView;
Handler=newhandler();
int count=0;字符串数据=”;
专用静态最终IntentFilter筛选器=新IntentFilter(
WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView=(TextView)findViewById(R.id.text\u id);
handler.post(updateTextRunnable);
}
Runnable updateTextRunnable=new Runnable(){
公开募捐{
如果(计数小于5){
最终StringBuilder sb=新StringBuilder();
最终WIFI经理mainWifiObj;
mainWifiObj=(WifiManager)getSystemService(Context.WIFI_服务);
类WifiScanReceiver扩展了BroadcastReceiver{
//BroadcastReceiver WifiScanReceiver=新的BroadcastReceiver(){
接收时公共无效(上下文c,意图){
List wifiScanList=mainWifiObj.getScanResults();
用于(扫描结果:wifiScanList){
如果(结果SSID等于(“DAL-WPA2”)){
sb.追加(“+”结果级);
}
if(result.SSID.equals(“DAL”)){
sb.追加(“+”结果级);
}
if(result.SSID.equals(“eduroam”)){
sb.追加(“+”结果级);
}                               
}
}
}
WifiScanReceiver wifiReciever=新的WifiScanReceiver();
registerReceiver(wifiReciever,新意向过滤器(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mTextView.setText(“被叫”+count+sb);
计数++;
}否则{
}               
//----------------此处的代码用于将值发送到java服务器---
handler.postDelayed(这是时间延迟);
}
};

我曾想过使用onPause和onResume方法,但我认为如果我需要每1-2秒更新一次代码以获得新的wifi强度,那么这是不可行的。

您应该考虑更清晰、更简单的解决方案。 有一个简单的策略可以做到这一点。您使用系统报警服务运行服务,并在接收时获取wifi信号强度,您可以存储触发次数,并仅设置您提到的几次或五次报警服务。 我相信这篇文章会对你有所帮助。
这可能更好

提供更多的代码或只是扩展您的问题。现在还不清楚应该如何理解它。@Rafik991这是全部代码。我想从wifi获取信号强度,但我没有得到它。我想每2秒获取信号强度的答案。