0

経過時間に基づいて 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 スレッドを実装した後でもテキストビューを更新できません。どこが間違っていますか?

4

1 に答える 1

0

解凍/インストールが速すぎます。これが問題です。

したがって、すべてのログを表示したい場合は、 += 演算子を含むテキストをtextview に追加するだけで、操作を段階的に表示したい場合は、すべての if ステートメントで使用しますThread.Sleep(500);

于 2013-09-10T05:42:21.353 に答える