Android四大组件之Service详解

 更新时间:2019年01月29日 08:53:11   作者:*是杯酒渐浓*  
今天小编就为大家分享一篇关于Android四大组件之Service详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

一、Service简介

Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。

Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。

二、Service生命周期

1.startService / stopService

生命周期顺序:onCreate->onStartCommand->onDestroy

OnCreate()

系统在service第一次创建时执行此方法,来执行只运行一次的初始化工作。如果service已经运行,这个方法不会被调用。

onStartCommand()

每次客户端调用startService()方法启动该Service都会回调该方法(多次调用)。一旦这个方法执行,service就启动并且在后台长期运行。通过调用stopSelf()或stopService()来停止服务。

OnDestory()

系统在service不再被使用并要销毁时调用此方法(一次调用)。service应在此方法中释放资源,比如线程,已注册的侦听器,接收器等等.这是service收到的最后一个调用。

2.bindService / unbindService

生命周期顺序:onCreate->onBind->onUnBind->onDestroy

同样首先是OnCreate(),接着是

OnBind()

当组件调用bindService()想要绑定到service时(比如想要执行进程间通讯)系统调用此方法(一次调用,一旦绑定后,下次再调用bindService()不会回调该方法)。在你的实现中,你必须提供一个返回一个IBinder来以使客户端能够使用它与service通讯,你必须总是实现这个方法,但是如果你不允许绑定,那么你应返回null。

OnUnbind()

当前组件调用unbindService(),想要解除与service的绑定时系统调用此方法(一次调用,一旦解除绑定后,下次再调用unbindService()会抛出异常)。

最后是OnDestory()

注意:通过bindService启动的Service的生命周期依附于启动它的Context。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Android中自定义ImageView添加文字设置按下效果详解

    Android中自定义ImageView添加文字设置按下效果详解

    这篇文章主要给大家介绍了关于Android中自定义ImageView添加文字设置按下效果的相关资料,实现后的效果非常利用用户的体验,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面随着小编来一起学习学习下吧。
    2017-08-08
  • Android实现获取SERIAL信息的方法

    Android实现获取SERIAL信息的方法

    这篇文章主要介绍了Android实现获取SERIAL信息的方法,涉及Android操作SERIAL的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android中不支持动态申请权限的原因

    Android中不支持动态申请权限的原因

    这篇文章主要介绍了Android中不支持动态申请权限的原因,本文列举了几个不支持动态申请权限的原因,需要的朋友可以参考下
    2015-01-01
  • Android开源AndroidSideMenu实现抽屉和侧滑菜单

    Android开源AndroidSideMenu实现抽屉和侧滑菜单

    这篇文章主要为大家详细介绍了Android开源AndroidSideMenu实现抽屉和侧滑菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 性能分析工具Systrace的使用及说明

    性能分析工具Systrace的使用及说明

    这篇文章主要介绍了性能分析工具Systrace的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Android关键字persistent详细分析

    Android关键字persistent详细分析

    这篇文章主要介绍了Android关键字persistent的相关资料,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-04-04
  • Android 资源混淆的方案及注意事项

    Android 资源混淆的方案及注意事项

    资源混淆有助于减小包体积,也可以提高被反编译后阅读代码的难度。还可以应对一些安全检测机构对于资源混淆要求。本文基于微信的Android资源混淆工具,实现资源混淆
    2021-05-05
  • Android系统状态栏定制图标显示逻辑控制

    Android系统状态栏定制图标显示逻辑控制

    这篇文章主要为大家介绍了Android系统状态栏定制图标显示逻辑控制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Android项目实战手把手教你画圆形水波纹loadingview

    Android项目实战手把手教你画圆形水波纹loadingview

    这篇文章主要为大家详细介绍了Android项目实战手把手教你画圆形水波纹loadingview,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android 自定义view实现水波纹动画效果

    Android 自定义view实现水波纹动画效果

    这篇文章主要介绍了 Android 自定义view实现水波纹动画效果的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-01-01

最新评论