Android - TextView分配未按预期工作

时间:2017-02-22 12:12:41

标签: java android

我的button中有一个activity。当我按下它时,按照方法" ProcessNumbers()"叫做。我需要首先在textview中显示"处理..." 文字的功能,然后处理loop,以及何时处理loop在2-3秒后完成,textview应显示"已处理" 文字。但这不会发生。当我点击button时,loop首先运行,2-3秒后,textview包含"已处理"。为什么在textview应包含"处理..."

的情况下缺少第一步
private void ProcessNumbers()
{
        TextView textViewProcessNumbers = (TextView) findViewById(R.id.textViewProcessNumbers);
        textViewProcessNumbers.setText("Processing...");

        int k = 0;
        for (long i = 0; i <= 1000000000; i++)
        {
                k = 1;
        }

        textViewProcessNumbers.setText("Processed...");
}

我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:0)

private void ProcessNumbers()
{
    TextView textViewProcessNumbers = (TextView) findViewById(R.id.textViewProcessNumbers);
    textViewProcessNumbers.setText("Processing...");
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            //Do something after 30000ms
            textViewProcessNumbers.setText("Processed...");
        }
    }, 30000);
}

使用处理程序进行延迟。希望它有所帮助

答案 1 :(得分:0)

您需要将该过程移至后台线程,例如使用AsyncTask,因为在离开主线程之前,textview不会更新。 也不建议在UI线程上执行长时间运行的操作,这可能会导致出现“应用程序无响应”对话框。

所以 1.将标签设置为Processing ... 2.使用您的进程启动AsyncTask 2.当AsyncTask完成更新onPostExecute中的标签

答案 2 :(得分:0)

您可以使用CountDownTimer,在查找文本视图后添加此代码。

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         textViewProcessNumbers.setText("Processing...");
     }

     public void onFinish() {
         textViewProcessNumbers.setText("Processed...");
     }
  }.start();

CountDownTimer(long millisInFuture,long countDownInterval)