本文为大家分享了android service计时功能的具体代码,供大家参考,具体内容如下
源码下载地址:https://github.com/luoye123/Timing
1、首先建立主页面的设计:activity_time.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/self_driving_wait_ll" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginTop="20.0dp" android:gravity="center_horizontal" android:text="00:00:00" android:textSize="88.0sp" /> </LinearLayout> </RelativeLayout>
2、Activity的建立:TimeActivity
public class TimeActivity extends AppCompatActivity {
public static String TIME_CHANGED_ACTION = "com.yy.time.TIME_CHANGED_ACTION";
public static TextView tv_time;
private SharedPreferencesUtil util;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_time);
tv_time= (TextView) findViewById(R.id.tv_time);
util=new SharedPreferencesUtil(this);
util.saveString(MyContant.STARTTIME, StringUtils.gettime());
startService(new Intent(this, TimeService.class));
}
}
3、Service的建立:TimeService
public class TimeService extends Service {
private String TAG = "TimeService";
private Timer timer = null;
private Intent timeIntent = null;
private SharedPreferencesUtil util;
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG,"TimeService->onCreate");
//初始化
this.init();
//定时器发送广播
timer.schedule(new TimerTask() {
@Override
public void run() {
//发送广播
sendTimeChangedBroadcast();
}
}, 1000,1000);
}
@Override
public IBinder onBind(Intent intent) {
Log.i(TAG,"TimeService->onBind");
return null;
}
/**
* 相关变量初始化
*/
private void init(){
util=new SharedPreferencesUtil(this);
timer = new Timer();
timeIntent = new Intent();
}
/**
* 发送广播,通知UI层时间已改变
*/
private void sendTimeChangedBroadcast(){
try {
timeIntent.putExtra("time",getTime());
timeIntent.setAction(TimeActivity.TIME_CHANGED_ACTION);
//发送广播,通知UI层时间改变了
sendBroadcast(timeIntent);
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 获取最新时间
* @return
*/
private String getTime() throws ParseException {
String time;
time=getsubtract(util.readString(MyContant.STARTTIME));
return time;
}
//时间相减 得到计时时间
public String getsubtract(String starttime) throws ParseException {
SimpleDateFormat myFormatter = new SimpleDateFormat( "hh:mm:ss");
String newtime= StringUtils.gettime();
Date date= myFormatter.parse(newtime);
Date mydate= myFormatter.parse(starttime);
int sec= (int) ((date.getTime()-mydate.getTime())/1000);
int min=sec/60;
int hour=min/60;
if (sec >= 60) {
sec = (sec % 60);
}
if (min >= 60) {
min = (min % 60);
}
String hString;
String mString;
String string;
if (hour < 10) {
hString = "0" + String.valueOf(hour);
} else {
hString = String.valueOf(hour);
}
if (min < 10) {
mString = "0" + String.valueOf(min);
} else {
mString = String.valueOf(min);
}
if (sec < 10) {
string = "0" + String.valueOf(sec);
} else {
string = String.valueOf(sec);
}
return hString + ":" + mString + ":" + string;
}
@Override
public ComponentName startService(Intent service) {
Log.i(TAG,"TimeService->startService");
return super.startService(service);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG,"TimeService->onDestroy");
}
}
4、BroadcastReceiver广播接受者,更新UI界面的时间:UITimeReceiver
public class UITimeReceiver extends BroadcastReceiver {
private TimeActivity dUIActivity = new TimeActivity();
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(TimeActivity.TIME_CHANGED_ACTION.equals(action)){
String strtime = intent.getStringExtra("time");
//此处实现不够优雅,为了在UITimeReceiver中使用DynamicUIActivity中的TextView组件time,而将其设置为public类型,
//更好的实现是将UITimeReceiver作为DynamicUIActivity的内部类
dUIActivity.tv_time.setText(strtime);
}
}
}
5、记住要在配置文件里面配置哦!
<service android:name=".Service.TimeService"/> <receiver android:name=".Service.UITimeReceiver"> <intent-filter> <action android:name="com.yy.time.TIME_CHANGED_ACTION"/> </intent-filter> </receiver>
好了,一个简单的计时就完成了,写的不好请见谅!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# service
# 计时
# android之计时器(Chronometer)的使用以及常用的方法
# android自定义倒计时控件示例
# android实现倒计时功能代码
# android计时器
# 时间计算器的实现方法
# Android实现计时与倒计时的常用方法小结
# Android实现加载广告图片和倒计时的开屏布局
# Android时分秒计时器的两种实现方法
# android开发教程之间隔执行程序(android计时器)
# Android 实现闪屏页和右上角的倒计时跳转实例代码
# Android 编程下的计时器代码
# 好了
# 下载地址
# 将其
# 要在
# 时就
# 设置为
# 大家分享
# 具体内容
# 配置文件
# 大家多多
# 完成了
# 改变了
# 相减
# dp
# center_horizontal
# textSize
# Activity
# TimeActivity
# sp
# TextView
相关文章:
开封网站制作公司,网络用语开封是什么意思?
5种Android数据存储方式汇总
简单实现Android验证码
如何在阿里云部署织梦网站?
红河网站制作公司,红河事业单位身份证如何上传?
如何配置支付宝与微信支付功能?
如何在IIS服务器上快速部署高效网站?
如何在IIS中新建站点并解决端口绑定冲突?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
宝塔建站无法访问?如何排查配置与端口问题?
,有什么在线背英语单词效率比较高的网站?
c++ stringstream用法详解_c++字符串与数字转换利器
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何通过云梦建站系统实现SEO快速优化?
如何在IIS中新建站点并配置端口与物理路径?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
表情包在线制作网站免费,表情包怎么弄?
已有域名能否直接搭建网站?
建站之星代理商如何保障技术支持与售后服务?
建站之星代理如何获取技术支持?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何通过老薛主机一键快速建站?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
如何在万网自助建站平台快速创建网站?
SQL查询语句优化的实用方法总结
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何用AWS免费套餐快速搭建高效网站?
如何快速生成高效建站系统源代码?
网站制作公司,橙子建站是合法的吗?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
网站制作公司排行榜,抖音怎样做个人官方网站
如何在云指建站中生成FTP站点?
Android自定义listview布局实现上拉加载下拉刷新功能
建站之星安装后界面空白如何解决?
如何零成本快速生成个人自助网站?
如何选择可靠的免备案建站服务器?
再谈Python中的字符串与字符编码(推荐)
盘锦网站制作公司,盘锦大洼有多少5G网站?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
如何在Windows环境下新建FTP站点并设置权限?
无锡营销型网站制作公司,无锡网选车牌流程?
如何在服务器上配置二级域名建站?
建站之星安装路径如何正确选择及配置?
公司网站设计制作厂家,怎么创建自己的一个网站?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
招贴海报怎么做,什么是海报招贴?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
*请认真填写需求信息,我们会在24小时内与您取得联系。