android数字时钟每5秒更新一次

android数字时钟每5秒更新一次,android,textview,clock,digital,Android,Textview,Clock,Digital,其想法是在前屏幕顶部的一个框中以数字格式显示当前系统时间,如小时:分钟:秒。它需要不断更新。但是,如果每1秒更新一次秒数,可能会导致系统停机。因此,我希望用户能够选择每1秒、5秒或10秒更新一次的速率。问题是:如何每5秒更新一次textview? 我们编写以下代码: package com.example.software; import android.os.Bundle; import android.app.Activity; import android.text.format.Tim

其想法是在前屏幕顶部的一个框中以数字格式显示当前系统时间,如小时:分钟:秒。它需要不断更新。但是,如果每1秒更新一次秒数,可能会导致系统停机。因此,我希望用户能够选择每1秒、5秒或10秒更新一次的速率。问题是:如何每5秒更新一次textview? 我们编写以下代码:

package com.example.software;

import android.os.Bundle;
import android.app.Activity;
import android.text.format.Time;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Time dtNow = new Time();
        dtNow.setToNow();
        int hours;
        int minutes;
        int second;
        int i=100;
        int j=0;
        TextView txt =(TextView) findViewById(R.id.txt_view);

        while(i>0){

            hours = dtNow.hour;
            minutes= dtNow.minute;
            second = dtNow.second;
            txt.setText(hours+":"+minutes+":"+second);
        try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {

                e.printStackTrace();
        }



        }

    }


}
我将此代码更新为:

package com.example.softwareproject;

import android.os.Bundle;
import android.app.Activity;
import android.text.format.Time;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

     Time dtNow = new Time();

     int hours;
     int minutes;
     int second;
     int i=100;
     int j=0;


     @Override
    public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         display();
    }

    public void display(){

        new Thread(new Runnable(){

            public void run() {

            while(i>0){
                    TextView txt =(TextView) findViewById(R.id.txt_view);
                    dtNow.setToNow();
                    hours = dtNow.hour;
                    minutes= dtNow.minute;
                    second = dtNow.second;
                    txt.setText(hours+":"+minutes+":"+second);


                        try{
                            Thread.sleep(5000);
                            }
                        catch (InterruptedException e) {
                            e.printStackTrace();
                            }
                        }
                 }
        }).start();

    }

}
但我仍然有一个错误:

[2012-12-14 03:54:25 - SoftwareProject] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.softwareproject/.MainActivity }
[2012-12-14 03:54:25 - SoftwareProject] ActivityManager: Warning: Activity not started, its current task has been brought to the front

应用程序停止。

执行此操作时,应用程序将永远不会离开onCreate循环。您应该创建一个asyntread或runnable,并将while循环放在其中。亲爱的dmaij,我按照您所说的做了,应用程序运行了,但它显示了时间,并在5秒钟后更新了错误发生的时间并停止了应用程序。很巧,软件项目已经停止,但我不知道为什么:,你知道吗?这是出现在控制台窗口中的消息:[2012-12-14 03:54:25-SoftwareProject]ActivityManager:Starting:Intent{act=android.Intent.action.MAIN cat=[android.Intent.category.LAUNCHER]cmp=com.example.SoftwareProject/.MainActivity}[2012-12-14 03:54:25-SoftwareProject]ActivityManager:警告:活动未启动,其当前任务已被带到front@HusseinA.Hammoud,此消息通常在应用程序已在运行且您尝试重新运行时出现。在清除数据并强制停止后尝试运行应用程序亲爱的Shreya Shah,我重新运行应用程序,控制台窗口中的错误消失,但5秒钟后仍停止,不幸的是,软件项目已停止对话。