簡體   English   中英

在Android中定期更新TextView

[英]Updating a textview periodically in android

我目前正在開發一個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”。

您可能想要使用AlarmManager之類的東西而不是sleep()因為sleep()會在睡眠時間內停止該過程中的所有操作。

它沒有顯示任何內容的原因是您正在onResume()方法中進行操作。 因此,當它加載顯示內容時,在它實際顯示任何內容之前,它正在處理該方法以為用戶進行設置。

因此,您想要的是:

  1. 加載顯示值為0
  2. 等待10秒
  3. 遞增並顯示給用戶
  4. 等待10秒
  5. 遞增並顯示給用戶

您通過sleep()命令得到的是:

  1. 將值設為0
  2. 等待10秒
  3. 將值設置為10
  4. 等待10秒
  5. 將值設置為20
  6. 顯示值

使用AlarmManager,您可以在onResume()方法中初始化顯示加載,然后AlarmManager每十秒鍾遞增一次值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM