这是我的代码。 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
。因为我认为它应该能够更快地更新屏幕。
答案 0 :(得分:3)
因为所有这一切都发生在UI线程上。
框架无法运行并实际重绘整个事情,因为你正在使用带休眠的UI线程。
答案 1 :(得分:2)
Thread.sleep(100)
阻止UI线程,不能更新任何UI元素。