android使用service控制计时,android利用service完成计时功能

本文为大家分享了android service计时功能的具体代码,供大家参考,具体内容如下

905275cc8d29ec1aef0cd3426e240923.gif

1、首先建立主页面的设计:activity_time.xml

android:id="@+id/self_driving_wait_ll"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center"

android:orientation="vertical">

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" />

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、记住要在配置文件里面配置哦!

好了,一个简单的计时就完成了,写的不好请见谅!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值