SLaks
SLaks
采纳率60.5%
2013-09-09 09:44 阅读 2.1k

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?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    sasuke38 Jobernowl 2013-09-10 04:26
    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);
                    }
                });
        }
    
    点赞 1 评论 复制链接分享

相关推荐