新浪微博Android客户端开发第三讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• •
• •
• • • • • • • • • •
Service 启动方式: 一、context.startService() 二、context.bindService(); 使用Service之前必须在androidMainfest.xml 中注册 调用流程: 第一种: 启动:context.startService() ---> onCreate() ---> onStartCommand() 销毁:ontext.stopService() ---> onDestroy(); 如果Service还没运行,则Android会先调用onCreate()方法,然后再调用onStartCommand(); 如果Service已经运行了,则只调用onStartCommand(),所以一个Service的onStartCommand(), 方法可能会调用多次。 第二种: 启动:context.bindService() ---> onCreate() --->onBind(); 销毁:onUnibind() ---> onDestroy() onBind() 将返回给客户端一个IBind接口实例,IBind允许客户端调用服务的方法,比如得到 Service允许状态或者其他操作这个时候调用者(Context,例如Activity)会和Service绑定在一起 Context退出了,Service就会调用onUnibind() ---> onDesytoy()相应退出
• • • • • • • • • •
• • •
Service概念及用途: Service 是 Android 系统中的一种组件,它和Activity 的级别差不多,但又Activity不同,它是不能与用户 交互的,但可以和其他组件进行交互。它不能自己运行,只能后台运行。 如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那我们什么时候会用到Service呢? 比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不用 Service,我们就听不到歌了,所以这时候就得用到Service了,又比如当我们一个应用的数据是通过网络 获取的,不同时间(一段时间)的数据是不同的这时候我们可以用Service在后台定时更新,而不用每打 开应用的时候在去获取。 Service生命周期: Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方 法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执 行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执 行onCreate()方法,而是直接执行onStart()方法,具体的可以看下面的实例。 Service与Activity通信: Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的 进程,这就涉及到不同进程间通信的问题了(AIDL)这一节我不作过多描述,当我们想获取启动的Service 实例时,我们可以用到bindService和onBindService方法,它们分别执行了Service中IBinder()和 onUnbind()方法。
– 不断侦听 传过来任务消息 不断侦听UI传过来任务消息
MainService 流程
MainService启动 run() 侦听任务 doTask(Task t) 处理业务逻辑, 发回更新消息给 主线程
UI发出任务 newTask(Task t)
Handler处理消息队列, , 调用更新UI方法 refresh(mess)
• • • •
系统结构
百度文库• UI层
– 微博中的各个窗体
• logic层
– 程序的核心控制调度模块,获取UI传递的数据、要执 行的任务,调用微博接口,获得网络数据,返回消息, 刷新(切换)UI
• 微博接口层(新浪API已封装) • 网络访问层(新浪API已封装) • Dao层
– 数据库操作
Logic层
• Task 程序中的任务
– taskID – taskParams
• IWeiboActivity 所有的Activity都实现它
– init() 初始化数据 – refresh()刷新UI
Logic --- MainService
• 完成程序调度
– 接收任务,完成业务逻辑,返回信息,更新UI
• 在后台运行(继承自Service类) • 线程(实现Runnable接口)
新浪微博Android 客户端开发视频 系统主框架搭建
一、Android Handler 介绍 二、Android Service 介绍 三、系统框架搭建
论坛地址:http://bbs.droidstouch.com QQ群:Touch Android(107086751)
Handler
• • Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的 函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送 消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。 Handler 常用方法: post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int) sendMessage(Message) sendMessageAtTime(Message,long) sendMessageDelayed(Message,long) 以上post类方法允许你排列一个Runnable对象到主线程队列中, sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.