Android四大组件知识
来源:互联网 发布:应用备份软件 编辑:程序博客网 时间:2024/06/06 07:15
{Service}
1.简介Service,有几种启动方式?
Service是专门在后台处理长时间任务的Android组件,它没有UI。
两种启动方式:startService和bindService。
2.启动方式的区别
startService只是启动Service,启动它的组件和service并没有关联,只有当Service调用stopSelf或者其他组件调用stopService服务才会终止。
bindService启动Service,其他组件可以通过回调获取Service的代理对象和Service交互,而这两方也进行了绑定,当启动方销毁时,Service也会自动进行unBind操作,当发现所有绑定都进行了unBind时才会销毁Service。
3.两种调用方式对Service生命周期函数影响
startService() --> onCreate() --> onStartCommand() --> Service running --> onDestroy() -->Service shut down Unbounded service
bindService() --> onCreate() --> onBind() --> Clients are bound to service -->onUnBind() -->onDestroy() -->Service shut down Bounded service
{Broadcast}
1、sendBroadcast 无序广播,会异步的发送给所有Recevier,接受广播的顺序是不确定的,有可能是同时的。
sendOrderBroadcast 有序广播,广播会先发送给优先级高(android:priority)的Recevier,而这个Recevier有权决定是继续发送到下一个Recevier或者是终止广播。
--------------------sendStickyBroadcast发送Sticky类型的广播,简单说就是在发送广播时Recevier还没有被注册,但它注册后还是可以收到它之前发送的广播--------------------
2、基于数据安全考虑,想发送广播只有自己(本进程)能接收到,该如何去做呢?
使用Handler,往主线程的消息池发送消息,只有主线程的Handler可以分发处理它,广播发送的内容是一个Intent对象,可以直接用Message封装一下,留一个和sendBroadcast一样的接口,在handleMessage时把Intent对象传递给已注册的Recevier。
3.使用广播来更新界面是否合适?
较频繁地刷新,建议还是不要使用,广播的发送和接受是有一定代价的,它的传输是通过Binder进程间通信机制来实现的,那么系统定会为广播能顺利传递做一些进程间通信的准备。除此之外,还可能其他因素让广播发送和到达不准时。(Android的ActivityManagerService有一个专门的消息队列来接受发送出来的广播,sendBroadcast执行完后就立即返回,但这时发送来的广播只是被放入到队列,并不一定马上被处理,当处理到当前广播时,又会把这个广播分给注册的广播接收分发器RecevierDispatcher,最后把广播交接给Reciver所在的线程的消息队列处理(Messager Queue)。整个过程从发送-ActivityManagerService-ReceiverDispatch进行了两次Binder进程间通信,最后还要交给UI的消息队列。)
- Android四大组件知识
- Android开发笔记之四大组件琐碎知识回顾总结
- [Android知识体系]之四大组件:broadcastReciever
- Android应用程序四大组件
- Android应用程序四大组件
- Android应用程序四大组件
- android 四大组件
- Android应用程序四大组件
- android应用程序四大组件
- Android四大组件
- Android应用程序四大组件
- Android四大组件
- Android四大组件
- android之四大组件
- Android四大组件介绍
- android四大组件
- Android应用程序四大组件
- Android开发四大组件
- dedecms-seo标签(title标题、keywords关键词、description描述)详解
- 使用Axis2实现WebServices
- java 安卓学习路线
- 搜索引擎
- Java类的加载过程
- Android四大组件知识
- 关于Django模板报TemplateDoesNotExist异常
- bootstrap 实例大全
- C++ const原理
- Java常用设计模式
- bzoj1099
- 使用表单标签,与用户交互
- Linux知识整理
- JavaScript判断一个数组里面是否有重复数据(对jqgrid数据进行操作)