Android 获取时间实时更新UI

来源:互联网 发布:万达影城知乎 编辑:程序博客网 时间:2024/05/24 23:15

第一种:使用Handler获取

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        time= (TextView) findViewById(R.id.time);        new TimeHandler().start();//        getTime()//第二种方法    }    class TimeHandler extends Thread{        @Override        public void run() {            super.run();            do{                try {                    Thread.sleep(1000);                    Message message=new Message();                    message.arg1=5;                    handler.sendMessage(message);                }                catch (Exception e){                }            }while (true);        }    }    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                case 1:                    long sysTime = System.currentTimeMillis();                    CharSequence sysTimeStr = DateFormat.format("hh:mm:ss", sysTime);                    time.setText(sysTimeStr); //更新时间                    break;                default:                   break;            }        }    };    /**     * 第二种方式 使用Handler     *     */    private Handler handlers=new Handler();    private void getTime(){        Timer timer=new Timer();        TimerTask timerTask=new TimerTask() {            @Override            public void run() {                SimpleDateFormat format=new SimpleDateFormat("HH:mm");                final String times=format.format(new Date());                handler.post(new Runnable() {                    @Override                    public void run() {                        time.setText(times);                    }                });            }        };        timer.schedule(timerTask,0,1000);    }

第二种:使用服务

 public IBinder onBind(Intent intent) {        return null;    }    @Override    public void onCreate() {        super.onCreate();        init();        //每隔一秒发送一次广播        timer.schedule(new TimerTask() {            @Override            public void run() {                sendTimeChangedBroadcast();            }        },1000,1000);    }    private void init() {        timer=new Timer();        sdf = new SimpleDateFormat("yyyy年MM月dd日 "+"hh:mm:ss");        timeIntent = new Intent();        bundle = new Bundle();    }    /**     * 发送广播,通知UI层时间已改变     */    private void sendTimeChangedBroadcast(){        bundle.putString("time", getTime());        timeIntent.putExtras(bundle);        timeIntent.setAction(TimeServiceActivity.TIME_CHANGED_ACTION);        //发送广播,通知UI层时间改变了        sendBroadcast(timeIntent);    }    /**     * 获取最新系统时间     * @return     */    private String getTime(){        return sdf.format(new Date());    }

Demo下载

0 0