说Activity、Intent、Service 是什么关系...
这道题想考察什么?
- 是否了解Activity的原理
- 是否了解Intent的原理
- 是否了解Service的原理
考察的知识点
- Activity的原理
- Intent的原理
- Service的原理
考生应该如何回答
1、Activity相关说明
Android中,Activity是所有App的根本内容,所有App的流程都运行在Activity之中,Activity有着自己的生命周期。 由系统控制生命周期,程序是无法改变,但可以运用onSaveInstanceState保存其状态对于Activity,最重要的是其生命周期的把握(如下图),然后就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),和Activity之间的跳转和数据传输(intent)。
2、Intent的相关说明
Android中提供了Intent机制来辅助应用间的交互与通讯,Intent管理者对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责寻找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可以运用于应用程序之间,也可运用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,完成了调用者与被调用者之间的解耦。
在SDK中给出了 Intent作用的表现形式为:
- 通过Context.startActivity() orActivity.startActivityForResult() 启动一个Activity;
- 通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
- 通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()) 发给broadcast receivers。
3、Service的相关说明
Service是android的一种机制,当它运行的时候如果是LocalService本地服务,那对应的 Service 是运行在主进程的main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。所以请不要把Service 理解成线程,它跟线程没有什么关系!
Service通常称之为“后台服务”,其中“后台”一词是相对于前台而言的,具体是指其本身的运行并不依赖于用户可视的UI界面,因此,从实际业务需求上来理解,Service的适用场景应该具备以下条件:1.并不依赖于用户可视的UI界面,2.具有较长时间的运行特性。
详细关注公众号:Android老皮
还能解锁 《Android十大板块文档》 ,让学习更贴近未来实战。已形成PDF版
内容如下:
1.Android车载应用开发系统学习指南(附项目实战)
2.Android Framework学习指南,助力成为系统级开发高手
3.2023最新Android中高级面试题汇总+解析,告别零offer
4.企业级Android音视频开发学习路线+项目实战(附源码)
5.Android Jetpack从入门到精通,构建高质量UI界面
6.Flutter技术解析与实战,跨平台首要之选
7.Kotlin从入门到实战,全方面提升架构基础
8.高级Android插件化与组件化(含实战教程和源码)
9.Android 性能优化实战+360°全方面性能调优
10.Android零基础入门到精通,高手进阶之路