上一篇中简单介绍了Service,这篇完成GPS轨迹记录;、
问题:
- service中开启GPS实时记录位置,怎样将获取到的数据在activity中显示;
- activity启动service方法用哪种方式;上一篇文章中提到用bind+start方式,具体实现方法,
- 实际需求:
①点击开始按钮,获取稳定的GPS信号,开始实时记录位置信息,显示暂停按钮,显示运动时间与距离。
②点击暂停按钮,暂停继续跟踪GPS,显示继续与停止按钮。
③响应继续与停止按钮的点击事件。
<一>GPS
推荐几个GPS的使用方法:
http://blog.youkuaiyun.com/u012810020/article/details/52517976
http://www.cnblogs.com/android-blogs/p/5718479.html
<二>问题:service修改Activity界面
插播:
Activity调用Service中的方法有哪些?
Activity调用Service中的方法——绑定服务的模式 绑定服务: ①Extending the Binder class 通过Binder接口的形式实现,当Activity绑定Service成功的时候Activity会在ServiceConnection的类的onServiceConnected()回调方法中获取到Service的onBind()方法中return过来的Binder 的子类。 ②Using a Messager ③Using AIDL aidl比较适合当客户端和服务器端不在同一个APP下的场景。
Activity如何给Service发送Message?
Service如何给Activity发送Message?
还没搞懂。。。
插播结束
参考:
http://blog.youkuaiyun.com/fengqiangfeng/article/details/7578264
http://blog.youkuaiyun.com/hhhccckkk/article/details/44037719
Service如何将一些状态告诉Activity呢?方法有三种
- service 通过广播的形式发送broadcast,我们写一个broadcastReceiver即可,通常的情况,将broadcastReceiver写成 Activity的内部类,这个onReceiver可以直接调用activity的方法来更新界面。
但是内部类只能采用代码注册的方法 registerReceiver(),不能再AndroidManifest.xml文件中进行静态的声明,因为内部类要依赖于外部类而存在的。如果你 一定要用AndroidManifest来注册receiver,那么只能把broadcastReceiver写成单独的文件的public类。这时 候,你想更新界面就比较麻烦了,你只能自己把你要更新的activity运行起来,然后再向这个activity的内部类发广播的消息来更新界面。 - 直接把activity传给service,service通过activity实例随便操作activity
使用接口回调方式,activity实现相应的接口,service通过接口进行回调,比较灵活。
我使用方法1.
先学习一下broadcaseReciver.