课题实训五

android开发课题五

一、要求
实现一个应用,包含一个Acitivity和Service,Acitivity包含“启动”、“结束”两个按钮,包含一个秒数显示控件;
服务运行时,每隔一秒循环计算一个递增值,从0开始,并显示到Acitivity上;
点击启动按钮,启动服务并开始(重置)计时,点击结束按钮,计时停止;
退出应用时,结束服务。
二、实现
1、绑定服务:创建Service——》写MyBinder类(与Activity进行通信,提供函数对Service中的内容作出改变),Service中的onBing函数返回MyBinder类——》在Acitivity中建立ServiceConnection对象并写onServiceConnected和onServiceDisConnection函数在bindService和UnbindService的时候调用。
2、建立线程:在线程中需要写一个循环,在线程运行的时候,不停的主线程发送消息。这个时候需要获取到主线程创建的Handler,因为Handler在Service的onbind生命周期才能传过来,所以线程的建立需要单独写一个函数而不能在onCreate周期内。
3、Handler的使用:在主线程中创建Handler并重写handlerMessage函数,在函数中接收传递过来的消息并更改UI上面显示的数据——》在Service中创建getMainHandler函数 public void getMainHandler(Handler handler) {
mHandler = handler;
}
——》在Activity中的onServiceConnected方法中将Handler传进去——》Service中发送消息——》Activity中接收消息并处理消息
4、启动服务和启动线程:服务的启动和线程的启动分开,服务启动和结束的时间是在Activity启动和结束的生命周期内实现;线程的启动和结束是在用户点击启动和结束按钮的时候。
5、点击按钮:没点结束按钮之前,两次点击启动按钮实现的效果 都是将计数器重启,也就是置零重新开始计数,因此只需要判断当前线程是否停止,如果没有停止,更改数据的值为0即可,如果线程停止了,则更改值为0并重新启动。
6、闪退问题:空指针异常了,比如在调用Service中的函数的时候没有判断Service是否为空,就使用了函数或者是变量,当Service为空的时候就会找不到这样的变量就会报错闪退。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值