更新时间每一秒 [英] Update time every second

查看:218
本文介绍了更新时间每一秒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要更新每一秒时间上倒计时到圣诞节倒计时。
我如何更新我的文字view.I时间没有在onCreate方法的code。

下面是我的一些code的。当我运行code那么它会给出确切的时间,但它并没有在屏幕上直播倒计时。有任何想法吗?
编辑:该readThisPeriod是计算留到圣诞节的时候

 公共无效DateCalculator(){
      今天的日历= Calendar.getInstance();
      日历thatDay = Calendar.getInstance();
      thatDay.set(Calendar.DAY_OF_MONTH,25);
      thatDay.set(的Calendar.MONTH,11); // 0-11所以少1
      thatDay.set(Calendar.YEAR,2014年);
      thatDay.set(Calendar.HOUR,0);
      thatDay.set(Calendar.MINUTE,0);
      thatDay.set(Calendar.SECOND,0);
      thatDay.set(Calendar.AM_PM,0);
      的System.out.println(thatDay.getTime());
      ScheduledExecutorService的ScheduledExecutorService的=      Executors.newScheduledThreadPool(1);
      scheduledExecutorService.scheduleAtFixedRate(新ReadThisPeriod(thatDay),0,1,
      TimeUnit.SECONDS);      长差异=(thatDay.getTimeInMillis() - today.getTimeInMillis())/ 1000;
      长天=差异/(60 * 60 * 24);
      时间长=差异/(60 * 60)%24;
      长期分钟=差异/ 60%60;
      长秒=差异%60;      daysBox =(的TextView)findViewById(R.id.s1Days);
      daysBox.setText(++日++时间++分++秒+);
}


解决方案

 进口android.app.Activity;
进口android.os.AsyncTask;
进口android.support.v7.app.ActionBarActivity;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.widget.TextView;进口的java.util.Calendar;
公共类MainActivity延伸活动{    私人TextView的daysBox;
    私人布尔运行;
    私人日历thatDay;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        daysBox =(的TextView)findViewById(R.id.main_day);        thatDay = Calendar.getInstance();
        thatDay.set(Calendar.DAY_OF_MONTH,25);
        thatDay.set(的Calendar.MONTH,11); // 0-11所以少1
        thatDay.set(Calendar.YEAR,2014年);
        thatDay.set(Calendar.HOUR,0);
        thatDay.set(Calendar.MINUTE,0);
        thatDay.set(Calendar.SECOND,0);
        thatDay.set(Calendar.AM_PM,0);        startDateCalculator();
    }    保护无效的onPause(){
        super.onPause();
        运行= FALSE;
    }    保护无效onResume(){
        super.onResume();
        运行= TRUE;
    }
    私有类CountdownTask扩展的AsyncTask<太虚,太虚,太虚> {
        保护无效doInBackground(无效参数... args){
            而(运行){
                尝试{
                    视频下载(1000);
                }赶上(例外五){                }                publishProgress();
            }
            返回null;
        }        保护无效onProgressUpdate(虚空...... RES){
            super.onProgressUpdate(RES);            长差异=(thatDay.getTimeInMillis() - System.currentTimeMillis的())/ 1000;
            长天=差异/(60 * 60 * 24);
            时间长=差异/(60 * 60)%24;
            长期分钟=差异/ 60%60;
            长秒=差异%60;
            daysBox.setText(++天+D+小时+:+分钟+:+秒+);
        }
    }    公共无效startDateCalculator(){        新CountdownTask()executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    }
}

I need to update time every second on a countdown timer which counts down to Christmas. How do I update the time in my text view.I do not have the code in the onCreate method.

here is some of my code. When I run the code it gives the exact time, but it does not countdown live on screen. Any ideas? Edit: the readThisPeriod is for calculating the time left until Christmas.

  public void DateCalculator() {
      Calendar today = Calendar.getInstance();
      Calendar thatDay = Calendar.getInstance();
      thatDay.set(Calendar.DAY_OF_MONTH, 25);
      thatDay.set(Calendar.MONTH, 11); // 0-11 so 1 less
      thatDay.set(Calendar.YEAR, 2014);
      thatDay.set(Calendar.HOUR, 0);
      thatDay.set(Calendar.MINUTE, 0);
      thatDay.set(Calendar.SECOND, 0);
      thatDay.set(Calendar.AM_PM, 0);
      System.out.println(thatDay.getTime());
      ScheduledExecutorService scheduledExecutorService = 

      Executors.newScheduledThreadPool(1);
      scheduledExecutorService.scheduleAtFixedRate(new ReadThisPeriod(thatDay), 0, 1, 
      TimeUnit.SECONDS);

      long diff = (thatDay.getTimeInMillis() - today.getTimeInMillis()) / 1000;
      long days = diff / (60 * 60 * 24);
      long hours = diff / (60 * 60) % 24;
      long minutes = diff / 60 % 60;
      long seconds = diff % 60;

      daysBox = (TextView) findViewById(R.id.s1Days);


      daysBox.setText("" + "" + days + "" + hours + "" + minutes + "" + seconds + " );
}

解决方案

import android.app.Activity;
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

import java.util.Calendar;


public class MainActivity extends Activity {

    private TextView daysBox;
    private boolean running;
    private Calendar thatDay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        daysBox = (TextView) findViewById(R.id.main_day);

        thatDay = Calendar.getInstance();
        thatDay.set(Calendar.DAY_OF_MONTH, 25);
        thatDay.set(Calendar.MONTH, 11); // 0-11 so 1 less
        thatDay.set(Calendar.YEAR, 2014);
        thatDay.set(Calendar.HOUR, 0);
        thatDay.set(Calendar.MINUTE, 0);
        thatDay.set(Calendar.SECOND, 0);
        thatDay.set(Calendar.AM_PM, 0);

        startDateCalculator();
    }

    protected void onPause() {
        super.onPause();
        running = false;
    }

    protected void onResume() {
        super.onResume();
        running = true;
    }


    private class CountdownTask extends AsyncTask<Void, Void, Void> {
        protected Void doInBackground(Void... args) {
            while (running) {
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {

                }

                publishProgress();
            }
            return null;
        }

        protected void onProgressUpdate(Void... res) {
            super.onProgressUpdate(res);

            long diff = (thatDay.getTimeInMillis() - System.currentTimeMillis()) / 1000;
            long days = diff / (60 * 60 * 24);
            long hours = diff / (60 * 60) % 24;
            long minutes = diff / 60 % 60;
            long seconds = diff % 60;


            daysBox.setText("" + "" + days + "d " + hours + ":" + minutes + ":" + seconds + " ");
        }
    }

    public void startDateCalculator() {

        new CountdownTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    }
}

这篇关于更新时间每一秒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆