Android 中 TextView 的 lag

下面是我的代码,TextView 被分成两组,要求其中一组要比另一组好。

   public void onLocationChanged(Location location) 
    {
        // TODO Auto-generated method stub
        if(predictionFlag)
        {
            longitude = location.getLongitude();
            latitude = location.getLatitude();
            predictionFlag = false;
        }
        int x = 0;
        do
        {
            if(x != 0)
            {
                try 
                {
                    Thread.sleep(100);
                } catch (InterruptedException e) 
                  {
                    e.printStackTrace();
                  }
            }
            Location predicationPoint = DOTGpsAppUtils.predictionAlgorithm(latitude, longitude, 1, 100);
            double predictionLongitude = (longitude + predicationPoint.getLongitude())/2;
            double predictionLatitude = (latitude + predicationPoint.getLatitude())/2;
            TextView textView = (TextView) findViewById(R.id.oneHundredMillisecondLatitude);
            textView.setText(Double.valueOf(predictionLatitude).toString());
            textView = (TextView) findViewById(R.id.oneSecondCalculatedPointLongitude);
            textView.setText(Double.valueOf(predictionLongitude).toString());
            if(x == 9)
            {
                longitude = predictionLongitude;
                latitude = predictionLatitude;
            }
            System.out.println(x);
            ++x;
        }while(x < 10);

        TextView textView = (TextView) findViewById(R.id.startingPointLongitude);
        textView.setText(Double.valueOf(location.getLongitude()).toString());
        textView = (TextView) findViewById(R.id.startingPointLatitude);
        textView.setText(Double.valueOf(location.getLatitude()).toString());
        textView =  (TextView) findViewById(R.id.oneSecondCalculatedPointLongitude);
        textView.setText(Double.valueOf(longitude).toString());
        textView = (TextView) findViewById(R.id.oneSecondCalculatedLatitude);
        textView.setText(Double.valueOf(latitude).toString());
        ++y;
        System.out.println("Thread Count:" + y);
    }

在 android 屏幕上为什么不能快速更新 R.id.oneHundredmilliesecand 和其它的 textviews?

public void onLocationChanged(final Location location) 
    {
        // TODO Auto-generated method stub
        runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if(predictionFlag)
        {
            longitude = location.getLongitude();
            latitude = location.getLatitude();
            predictionFlag = false;
        }
        int x = 0;
        do
        {
            if(x != 0)
            {
                try 
                {
                    Thread.sleep(100);
                } catch (InterruptedException e) 
                  {
                    e.printStackTrace();
                  }
            }
            Location predicationPoint = DOTGpsAppUtils.predictionAlgorithm(latitude, longitude, 1, 100);
            double predictionLongitude = (longitude + predicationPoint.getLongitude())/2;
            double predictionLatitude = (latitude + predicationPoint.getLatitude())/2;
            TextView textView = (TextView) findViewById(R.id.oneHundredMillisecondLatitude);
            textView.setText(Double.valueOf(predictionLatitude).toString());
            textView = (TextView) findViewById(R.id.oneSecondCalculatedPointLongitude);
            textView.setText(Double.valueOf(predictionLongitude).toString());
            if(x == 9)
            {
                longitude = predictionLongitude;
                latitude = predictionLatitude;
            }
            System.out.println(x);
            ++x;
        }while(x < 10);

        TextView textView = (TextView) findViewById(R.id.startingPointLongitude);
        textView.setText(Double.valueOf(location.getLongitude()).toString());
        textView = (TextView) findViewById(R.id.startingPointLatitude);
        textView.setText(Double.valueOf(location.getLatitude()).toString());
        textView =  (TextView) findViewById(R.id.oneSecondCalculatedPointLongitude);
        textView.setText(Double.valueOf(longitude).toString());
        textView = (TextView) findViewById(R.id.oneSecondCalculatedLatitude);
        textView.setText(Double.valueOf(latitude).toString());
        ++y;
        System.out.println("Thread Count:" + y);
                }
            });
    }