Android基础学习整理知识点(二)

Android四大组件——Service

Service是什么?

可长期运行在后台没有界面的组件。可由其它组件启动,组件通过绑定可以与其交互。

Service类型

1.前台服务
执行用户能注意到的操作。音乐播放,用户可以通过通知栏知道当前播放的内容。
2.后台服务
执行用户不会注意到的操作。上传、定时关闭
3.绑定服务
绑定后可以与绑定组件进行交互。

Service的注册

与Activity类似需要在AndroidManifest.xml中进行注册。
<service android:name=".services.FirstService" />
还能写其他属性android:permission是权限声明,android:process设置具体的进程名称。

Service生命周期



 

两种绑定方式及其生命周期

  • startService方式:onCreate -> onStartCommad -> onDestory(想要启动一个后台服务进行某项任务)
  • bindService方式:onCreate -> onBind -> onUnbin -> onDestroy(需要与服务进行通信)
通过bind方式开启的服务会与调用者的生命周期进行绑定,并能进行通信,单启动时,调用者销毁服务也会销毁,start开启的不会销毁但不会通信。当所有的客户端都和service解除绑定后,系统会销毁service。(除非service也被startService()方法开启)
  • 混合开启服务方式:onCreate-> onStartCommad -> onBind (想长期运行并通信,调用者结束服务不结束)
开启服务,能够确保服务长期运行
绑定服务,能够通信(只把Service的IBinder对象传递给Activity,不会绑定两个对象的生命周期)
退出activity,要解绑服务释放资源
Service一般在主线程中,注意不要进行耗时操作。

重复调用startService或者bindService

  • 重复调用startService会重复执行onStartCommand,onCreate只会执行一次。
  • 重复调用bindService时只回调一次onBind,之后只会直接把IBinder对象传递给后来的客户。
如果Service已经由某个客户端通过StartService()启动,接下来由其他客户端 再调用bindService()绑定到该Service后调用unbindService()解除绑定最后在 调用bindService()绑定到Service的话,此时所触发的生命周期方法如下:
  •  onCreate( )->onStartCommand( )->onBind( )->onUnbind( )->onRebind( )

问题思考:
1.Service与Thread线程的区别?
两者没有太大关系,Thread是线程,程序执行的最小单元,分配CPU的最小单元,可以运行耗时操作。Service是安卓的组件,运行在主进程的主线程上。不同的Activity中无法对同一线程进行控制。
只要回调了onStartCommad服务就会长期运行,尽管调用者销毁。(没有服务内容)65s后会自动销毁。(Android12)

2.Service应用场景:
音乐播放、下载、上传大文件、定时关闭应用的功能。

3.Service里可以弹Toast吗?为什么?
可以,一它在主线程,可以刷新UI,二是context的子类有上下文。有些时候就可以通过toast告诉用户发生了什么事。

4.一个服务可以被多个客户端(Activity)绑定吗?
可以,但只有第一个组件绑定时才调用onBind(),其它的只是传递个IBinder对象给绑定组件以便通信。

5.为什么需要前台服务?
若服务在后台的运行,当内存不足时可能会优先对其进行回收,为了能够保持服务长期工作可置为前台服务。

#Android##安卓工程师##android##安卓工程师面经##安卓开发#
Android技术 文章被收录于专栏

热门Android技术学习

全部评论
感谢大佬,涨知识了
点赞 回复 分享
发布于 2022-09-20 11:01 江苏

相关推荐

能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务