最近知道朋友面试,于是就问了一下关于面试的问题,发现平时用的挺顺手,要是被突然这么一问,还真有些答不上来。本篇博文,就这些问题,综合 Google 官方文档和网上一些大牛的博客,给出一个比较专业的答案,希望对各位面试的朋友有些帮助。
Question 1: 碎片跳转碎片然后怎么从这个碎片返回到前面一个碎片?
这个问题很简单,但是为了答案的可信度和专业度,这里还是要贴上官方的文档:
官方文档链接
当你的才华还撑不起你的野心时,你就应该静下心来学习
最近知道朋友面试,于是就问了一下关于面试的问题,发现平时用的挺顺手,要是被突然这么一问,还真有些答不上来。本篇博文,就这些问题,综合 Google 官方文档和网上一些大牛的博客,给出一个比较专业的答案,希望对各位面试的朋友有些帮助。
这个问题很简单,但是为了答案的可信度和专业度,这里还是要贴上官方的文档:
官方文档链接
什么是绑定服务?
绑定服务是指服务与其他绑定在一起。比如说,我们可以将服务绑定在 Activity 上,来发送请求,接受响应,甚至是执行进程间的通讯(IPC)。我们需要知道的是,绑定服务的生命周期通常与被绑定者的生命周期相同,不会无限期的运行在后台。
想要服务绑定于某个组件,你必须实现 onBind() 回调方法。该方法返回的 IBinder 对线定义了启动者与 Service 交互的接口。
通过调用 bindService() 来绑定服务。前提是,你必须提供 ServiceConnection 的实现,ServiceConnection 能够监控调用者与 Serviced 的链接。创建后,系统会调用 ServiceConnnection 接口中的 onServiceConnected() 回调,并先调用者传递 IBinder.这样,二者就可以通信了。
多个组件可以同时与 Service 绑定,不过,需要注意的是,只有在第一个组件绑定时,系统才会调用 onBind() 方法返回检索到的 IBinder.随后的绑定,系统将不在调用 onBind(),而是将同一个 IBinder 传递给绑定的组件。
何时销毁?
当最后一个与之绑定的组件解绑时,系统才会将 Service 销毁(排除 startService() 也启动了该服务)。
Service 作为 Android 四大组件之一,在 Android 开发中有这不可替代的作用。今天这篇博文,我们就来详细了解一下 Android 的 Service
什么是服务?
Service 与 Activity 不同,它是一个不需要交互界面,且能够在后台长时间运行的应用组件。通常情况下,Service 能够由其他应用组件来启动,即使启动者被销毁了,它依然能够在后台继续运行。
它有什么作用?
我们可以将 Service 与其他组件进行绑定,两者进行通信,也可以执行进程间的通信(IPC).通过 Service,我们可以处理网络事务、播放音乐、执行 I/O 操作或者与提供内容的程序交互。注意,所有的一切,都是在后台执行的。
我们可以通过下面两种方式来启动一个服务:
startService() : 这种方式,即使启动者别销毁了,Service 依旧可以在后台运行,且不会反悔结果给调用者。bindServcie() : 这种方式,使得 Service 出于绑定状态。该服务提供了一个接口,允许我们与 Service 进行交互(发送请求,获取结果),甚至是用进程通信(IPC)跨进程交互。另外,多个组件可以同时绑定到该服务,同时如果你想要停止该服务,你需要解绑所有的绑定,该服务才能够被销毁。注意1:上面的两种方式可以同时存在,也就是说,你可让一个服务以
startService()的方式在后台无限期的运行,也可以让该 Service 绑定到某一个组件上。注意2:服务默认情况下是在主进程中运行的,它既不创建自己的线程,也不在单独的进程中运行,当然,你另行指定的话就另说了。也就是说,如果你想在 Service 中执行一些耗时操作的话,请在单独开一个子线程,以降低 ANR 的风险。