在UI线程上运行仅更新最后的期望结果(Android)

时间:2013-09-10 05:33:40

标签: java android multithreading android-ui

我正在尝试根据已用时间执行更新UI的任务,以下是我的代码:

我的OnCreate方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView tx = (TextView)findViewById(R.id.textView);

    startTime = System.nanoTime();
    estimatedTime = (System.nanoTime() - startTime) / 1000000000;
    tx.postInvalidate();
    System.out.println(""+estimatedTime);
      MainActivity.this.runOnUiThread(new Runnable(){
        public void run() {
            while (estimatedTime <= 100){
                System.out.println(""+estimatedTime);

                if(estimatedTime == 10){
                    TextView tx = (TextView)findViewById(R.id.textView);
                    tx.setText("Shri Ram Raksha Stotram"); 
                    System.out.println("Yay");
                }
                if(estimatedTime == 20){
                    TextView tx = (TextView)findViewById(R.id.textView);
                    tx.setText("Inatializing"); 
                    System.out.println("Yay");
                }
                if(estimatedTime == 30){
                    TextView tx = (TextView)findViewById(R.id.textView);
                    tx.setText("Preparing to install"); 
                    System.out.println("Yay");
                }
                if(estimatedTime == 40){
                    TextView tx = (TextView)findViewById(R.id.textView);
                    tx.setText("Installing"); 
                    System.out.println("Yay");
                }
                if(estimatedTime == 50){


                    TextView tx = (TextView)findViewById(R.id.textView);
                    tx.setText("Installed"); 
                    System.out.println("Yay");
                }
                if(estimatedTime == 60){
                    TextView tx = (TextView)findViewById(R.id.textView);
                    tx.setText("Unzipping packages..."); 
                    System.out.println("Yay");
                }


                estimatedTime = (System.nanoTime() - startTime) / 1000000000;
            }

        }
    });
}

以上所有代码都在OnCreate方法上,但是即使在实现RunonUI线程后我无法更新textview,我在textview上得到的唯一结果就是最后一个if条件“Unzipping Packages”。我哪里错了?

1 个答案:

答案 0 :(得分:0)

解压缩/安装太快,这就是问题所在。

因此,如果您希望在文本视图中看到所有日志附加文本 + =运算符,请逐步查看操作,然后使用{{1}在你的每个if语句中