面试题记录第二节——(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

这里写图片描述

这里写图片描述