TextView在Android上的延迟

时间:2013-09-09 07:26:39

标签: android textview

这是我的代码。 Textviews分为两组,一组优于另一组

            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。因为我认为它应该能够更快地更新屏幕。

2 个答案:

答案 0 :(得分:3)

因为所有这一切都发生在UI线程上。

框架无法运行并实际重绘整个事情,因为你正在使用带休眠的UI线程。

答案 1 :(得分:2)

Thread.sleep(100)阻止UI线程,不能更新任何UI元素。