博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 时间维护服务 TimeService(针对于特殊定制设备)
阅读量:5950 次
发布时间:2019-06-19

本文共 3067 字,大约阅读时间需要 10 分钟。

 

此方法针对于无法自动获取网络时间的特殊设备,正常 Android 设备直接调用

System.currentTimeMillis();

 方法获取当前时间即可。

TimeService 集成于 Service,实现与主Activity 的生命周期绑定。

 

TimeService 代码

public class TimeService extends Service {    private TimeService mContext;    private Timer mTimer;//定时器    private long currentTimeMillis = 0;//当前时间    private static final long UPDATE_TIME_OFFSET = 1 * 1000;//自动更新间隔    private CheckTimeTask checkTimeTask;    private UpdateTimeTask updateTimeTask;    //需用内部类继承Binder,并定义方法获取Service对象    private final IBinder binder = new TimeBinder();    //外部调用,获取当前时间    public long getCurrentTimeMillis() {        return currentTimeMillis;    }    //初始化服务时间    public void setCurrentTimeMillis(String dateStr) {        if (StringUtil.isNullOrEmpty(dateStr)) {            return;        }        try {            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            Date date = sdf.parse(dateStr);            currentTimeMillis = date.getTime();        } catch (ParseException e) {            e.printStackTrace();        }    }    public class TimeBinder extends Binder {        public TimeService getService() {            return mContext;        }    }    @Nullable    @Override    public IBinder onBind(Intent intent) {        return binder;    }    @Override    public void onCreate() {        super.onCreate();        mContext = this;        initData();    }    private void initData() {        mTimer = new Timer();        checkTimeTask = new CheckTimeTask();        updateTimeTask = new UpdateTimeTask(UPDATE_TIME_OFFSET);        mTimer.schedule(checkTimeTask, 1000, 5 * 60 * 1000);//每5分钟更新一次网络时间        mTimer.schedule(updateTimeTask, 0, UPDATE_TIME_OFFSET);    }    @Override    public void onDestroy() {        super.onDestroy();        if (mTimer != null) {            mTimer.cancel();            mTimer = null;        }        if (checkTimeTask != null) {            checkTimeTask.cancel();            checkTimeTask = null;        }        if (updateTimeTask != null) {            updateTimeTask.cancel();            updateTimeTask = null;        }    }    /**     * 获取服务器时间     */    private class CheckTimeTask extends TimerTask {        @Override        public void run() {         //=========此处为获取网络时间请求========         //===============================            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            if (bean != null ) {                String dateStr = bean;                try {                    Date date = sdf.parse(dateStr);                    currentTimeMillis = date.getTime();                } catch (ParseException e) {                    e.printStackTrace();                }            }        }    }    /**     * 定时更新当前时间     */    private class UpdateTimeTask extends TimerTask {        /**         * 更新时间间隔         */        private long offset = 0;        public UpdateTimeTask(long offset) {            this.offset = offset;        }        @Override        public void run() {            currentTimeMillis += offset;        }    }}

 

转载于:https://www.cnblogs.com/ProMonkey/p/5765208.html

你可能感兴趣的文章
JQ 循环切换DIV
查看>>
Android Fragment实践(二)
查看>>
centos 修改主机名立即生效和重启后也生效的方法
查看>>
Windows 64 位 mysql 5.7以上版本包解压安装
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
TClientDataSet[14]: 测试 FindFirst、FindNext、FindLast、FindPrior、Found
查看>>
CentOS 6.3中配置bond多网卡负载均衡
查看>>
clamav 完整查杀 linux 病毒实战
查看>>
我的友情链接
查看>>
EIGRP的Metric计算以及负载均衡
查看>>
org-capture 配置
查看>>
linux下lvs搭建负载均衡集群
查看>>
JMS 实例讲解
查看>>
求教:如何成为一个优秀的项目经理人
查看>>
shell 脚本--备份、还原mysql数据库
查看>>
JS脚本静态变量调用方法
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
正则表达式验证身份证格式是否正确
查看>>
Firebird(全功能的,免维护的数据库,能够管理多个独立的数据库) V2.1.3 英文特别版...
查看>>