面试题记录第二节——(service、Broadcast)
来源:互联网 发布:想做程序员需要学什么 编辑:程序博客网 时间:2024/05/24 05:28
一、问service是什么?
答:service(服务)是一个一种可以在后台,执行长时间运行操作,而没有用户界面的组件。注意:service和braodcastReceiver都是运行在主线程。所以不建议执行耗时操作
二、Service在程序中运行,有那两种方式?
答:startService():、bindService():
startService()
此种开启方式Service会经历onCreate()–onStart()。若Service还没运行,则先调用onCreate(),然后调用onStart();如果Service已经启动,则只会调用onStart()。一个Service的onStart()方法可以被调用多次。stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
bindService():
此种启动方式Service会经历onCreate()–onBind(),onBind将会返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service的运行状态等。这个时候调用者会和Service绑定在一起,调用者退出的时候,Service就会调用onUnbind–onDestroy退出。
三、service和Thread的区别?
答:startService():、bindService():
- 1、定义方面区别
Thread是程序执行的最小单元(线程),它是分配CPU的最小单位,可以用它来执行一些异步操作。
service是android的一种机制,当它运行的时候,如果是本地的service,那么它对应的线程是主线程,(也可以理解为,service依托于它所在的主线程),所以相比而言,Thread是很独立的。
- 2、实际开发中方面区别。
Thread可以执行耗时操作。
service试运行在主线程,不可以做耗时操作。如果需要必须开启一个子线程来操作耗时任务。
- 3、应用场景方面区别。
Thread,经常用在、数据下载、数据上传,图片加载,等大数据交互的情况下。
service,经常用在,需要长时间运行在后台,并且不需要数据交互,才会使用,比如闹钟,天气预报,后台播放音乐等。
四、service和Thread有什么关系,什么时候用到service,什么时候用到thread?
答:可以明确的说,他们没有任何的关系,之所以有人把他们联系起来,可能是因为英文翻译的原因,service翻译的意思是“服务”,而“服务”可以理解为后台。
Thread是开启一个子线程,在子线程中执行一些耗时操作,就不会阻塞主线程的运行,而Service在我们的观念中,他是处理一些后台任务,所以可以把一些耗时操作放在service来处理,这里是大错特错。这是把后台的概念和子线程的概念全部搞乱了,开启一个service和开启一个Thread是两码事。在提示一下,service的运行是依赖于主线程,而Thread是子线程。所以两者没有任何关系,也不要在service执行耗时操作。
五、什么是广播?
**答:广播他是一个用到非常广泛,它是在应用程序之间传输信息的一种机制,它类似于java中的观察者模式,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传递的数据
。**
六、广播的场景、种类?
答:
- 场景:
a、同一个app中多个不通的组件之中进行消息通讯。
b、不通之间app组件之间的通讯。
- 种类:
a、普通广播(Content.sendBroadcast)
b、有序广播(Content.sendOrderedBroadcast),根据优先级来进行传递。
c、本地广播(Local Broadcast):只在APP内容使用。
七、注册广播有几种方式?
答:
1、静态注册。
静态注册是在AndroidManifest.xml文件中配置,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。
2、动态注册。
动态注册需要在代码中动态的指定广播地址并注册,通常我们是在Activity或Service注册一个广播,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。所以,记得在特定的地方执行解除注册操作:
详情:http://www.cnblogs.com/sunzn/archive/2013/02/13/2910899.html
八、广播实现的机制?
答:
AMS:是Android内核的核心功能之一。
AMS:是android系统服务,Activity管理的服务端,用于管理activity的各种行为,控制activity的生命周期,派发消息事件,低内存管理等等。实现了IBinder接口,可以用于进程间通信。
九、问:LocalBroadcastManager作用是什么?
答:推荐博客:http://www.cnblogs.com/zhaoyanjun/p/6048369.html
- 面试题记录第二节——(service、Broadcast)
- 面试题记录第二节——(Binder)
- 面试题记录第七节——(事件分发)
- 笔试面试题记录(0x01) —— #define
- 面试题记录第一节——(activity、fragment)
- 面试题记录第五节——Asynctask
- 笔试面试题记录
- 面试题记录
- java 面试题记录
- 笔试面试题记录
- 笔试/面试题记录
- 面试题记录(B1)
- 面试笔试题记录
- 面试刷题记录
- SQL面试题记录
- 面试题记录
- Android面试题记录
- 面试题记录
- 【安卓学习笔记】安卓开发-Android Studio初步
- my first article
- 题目28:大数阶乘
- Atom解决快捷键冲突
- 大一java图书馆管理系统课程设计
- 面试题记录第二节——(service、Broadcast)
- Java项目前有红色感叹号,找不到或无法加载主类
- 表单提交文件上传
- Git浅谈与使用
- tcp/ip协议栈-驱动到应用
- 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。
- 利用@media screen实现网页布局的自适应
- Java面向对象之多态
- Redis集群一直提示Waiting for the cluster to join....的终极解决方案