我正在开发一个Android应用程序。它需要定期更新textview值。
例如,我希望每秒增加10个值。 我尝试使用以下代码,但它工作不正常:textview仅在增量完成后更新
package com.example.stack1;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void onResume(){
super.onResume();
TextView output=(TextView) findViewById(R.id.output);
output.setText(String.valueOf(0));
System.out.println(0);
try {
Thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
output.setText(String.valueOf(10));
System.out.println(10);
try {
Thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
output.setText(String.valueOf(20));
System.out.println(20);
}
}
output
是main.xml文件中的textview。该文件仅包含此对象。
注意 - textview中的预期输出为“0”,在20秒“20”后10秒“10”后。但是,使用此代码,输出为空,直到20秒,然后出现“20”。
答案 0 :(得分:0)
您可能希望使用类似AlarmManager而不是sleep()
的内容,因为sleep()
会停止在睡眠时间过程中发生的所有事情。
它没有显示任何内容的原因是你在onResume()
方法中这样做。因此,当它加载显示器时,在实际显示任何内容之前,它正在处理该方法以便为用户设置内容。
所以,你想要的是:
由于sleep()
命令,您得到的是:
使用AlarmManager,在onResume()
方法中初始化显示加载,然后AlarmManager每十秒递增一次。