在android中定期更新textview

时间:2012-09-03 12:19:18

标签: java android textview

我正在开发一个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”。

1 个答案:

答案 0 :(得分:0)

您可能希望使用类似AlarmManager而不是sleep()的内容,因为sleep()会停止在睡眠时间过程中发生的所有事情。

它没有显示任何内容的原因是你在onResume()方法中这样做。因此,当它加载显示器时,在实际显示任何内容之前,它正在处理该方法以便为用户设置内容。

所以,你想要的是:

  1. 加载显示值0
  2. 等待10秒
  3. 递增并显示给用户
  4. 等待10秒
  5. 递增并显示给用户
  6. 由于sleep()命令,您得到的是:

    1. 将值设置为0
    2. 等待10秒
    3. 将值设置为10
    4. 等待10秒
    5. 将值设置为20
    6. 显示值
    7. 使用AlarmManager,在onResume()方法中初始化显示加载,然后AlarmManager每十秒递增一次。