1

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

4

2 回答 2

3

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

当您使用休眠的 UI 线程时,框架没有机会运行并实际重绘整个事物。

于 2013-09-09T07:30:19.783 回答
2

Thread.sleep(100)阻塞 UI 线程并且不能更新 UI 元素。

于 2013-09-09T07:30:42.967 回答