此方法针对于无法自动获取网络时间的特殊设备,正常 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;
}
} }

Android 时间维护服务 TimeService(针对于特殊定制设备)的更多相关文章

  1. Mosquitto搭建Android推送服务(一)MQTT简介

    总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...

  2. Android窗口管理服务WindowManagerService对壁纸窗口(Wallpaper Window)的管理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8550820 Android系统中,壁纸窗口和输 ...

  3. Android推送服务——百度云推送

    一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...

  4. Android 媒体存储服务(二)

    Android 媒体存储服务 简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套 ...

  5. Android 媒体存储服务(一)

    Android 媒体存储服务 本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner.MediaProvider以及媒体信息解析等部分),包括如何把 ...

  6. Android调用Web服务

    现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...

  7. Android窗口管理服务WindowManagerService切换Activity窗口(App Transition)的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8596449 在Android系统中,同一时刻只 ...

  8. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activ ...

  9. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

随机推荐

  1. 修改C# 新建类模板

    找到安装路径下的这个文件夹:D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSh ...

  2. Head First Html and CSS学习笔记之CSS

    第七章 CSS入门 元素的许多属性都可以设置样式,太多了,记不住,可以参考<CSS Pocket Reference>. 外部样式表,<link type = "text/ ...

  3. 误差曲线(Matlab)

    loglog(dof(:),errorestimate(:),:),errorestimate1(:),);hold on; loglog(dof(:),eigvalue(:)-[);%[13.086 ...

  4. js中原型的概念

  5. cocos2dx中常见设计模式

    1.单例设计模式:导演类 2.观察者模式: 被观察者含有一个数组,里边存放了所有观察者的引用,在被观察者的状态发生改变的时候,通过调用观察者的函数来通知观察者,实现了信息的传递.  事件监听器:就是采 ...

  6. 从红米手机经常发生UIM没有服务的一些猜想

    缘起:买了测试用的红米手机,安装电信卡,经常生UIM没有服务,大约两天1次. 我的解决办法:飞行模式切换一下就恢复正常. 之前这张卡用三星的信号是满格,红米断开挺经常的 上网搜索: 同样的现象,还好官 ...

  7. linux命令(8):cp 命令

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...

  8. fastjson将json字符串转化成bean对象解析出错的检查方法

    我的情况是:解析第一层数据成功,解析第二层嵌套的数据失败.如: { "response": { "resultcode": "0", &qu ...

  9. linux用户管理

    管理用户的文件 添加用户组 添加用户 修改权限

  10. Highchart URL

    http://www.highcharts.com/stock/demo/flags-general http://www.codesec.net/view/217265.html http://js ...