首页 > 其他分享 >Android Service中的startService或者bindService的区别

Android Service中的startService或者bindService的区别

时间:2023-05-03 17:08:54浏览次数:40  
标签:调用 服务 调用者 Service startService Android 方法 bindService

Service创建有两种方法:  startService或者bindService



服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都 可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服 务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的 特点。



如果打算采用 Context.startService() 方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建, 多次调用startService()方法并不会导致多次创建服务, 但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。



如果打算采用 Context.bindService() 方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。

标签:调用,服务,调用者,Service,startService,Android,方法,bindService
From: https://blog.51cto.com/u_16034393/6241376

相关文章

  • Android-图片压缩(二)-纯干货
    Android-图片压缩(一)-项目中取图片转bitmapAndroid-图片压缩(二)-纯干货前言:让我们手撸一个图片压缩库,对压缩工具鲁班进行升级改造。在平常开发当中,我们一般是使用第三方的工具,不仅快,而且上手简单,基本不用我们动脑子,压缩我们用鲁班压缩,加载图片我们用Glide,这两大工具我想......
  • Android JetPack~LiveData(二) 数据倒灌问题
    Android数据绑定技术一,企业级开发Android数据绑定技术二,企业级开发Android JetPack~DataBinding(数据绑定)(一)  集成与使用Android JetPack~LiveData(一) 介绍与使用AndroidJetPack~LiveData(二)数据倒灌问题Android JetPack~ViewModel(一) 介绍与......
  • 浅谈如何使用 github.com/kardianos/service
    在实际开发过程中,有时候会遇到如何编写Go开机自启服务的需求,在linux中我们可以使用systemd来进行托管,windows下可以通过注册表来实现,mac下可以通过launchd来实现,上面的方式对于开发者来说,并不是什么困难的事情,但是对于使用者而言,是并不希望通过这么复杂的方式来达到开机自启的功能......
  • Android 开发入门(5)| 数据存储
    0x07数据存储(1)共享参数SharedPreferencesa.用法用法SharedPreferences是Android的一个轻量级存储工具,采用的存储结构为键值对的方式共享参数的存储介质是符合XML规范的配置文件,路径为/data/data/com.example.test/shared_prefs/xxx.xml使用场景简单且孤立的......
  • android5.0使用Notification报RemoteServiceException的解决办法
    有时android5.0下使用Notification会报如下错误信息(比如开启重启动系统就要发送通知)android.app.RemoteServiceException:Badnotificationpostedfrompackage*:Couldn'tcreateicon:StatusBarIcon这个问题多数集中在setSmallIcon(R.drawable.scan......
  • protobuf使用(一)android ndk 编译 protobuf-3.6.x windows
    首先建议大家看好版本,环境,有可能因为小的变化会造成编译有问题: 我的环境是PC OS:windows10(没办法暂时没机器);NDK:android-ndk-r17b-windows-x86_64ProtoBuf:protobuf-3.6.x  下载链接:https://github.com/protocolbuffers/protobuf/tree/3.6.x代码生成工具:protoc-3.6.1-wi......
  • Android换肤白天/夜间模式的框架
    Android换肤/夜间模式的Android框架,配合theme和换肤控件框架可以做到无缝切换换肤(无需重启应用和当前页面)。ThisframeworkofAndroidappsupportmultipletheme(suchasday/nightmode)andneedn’tfinishcurrentapplicationorcurrentactivity.......
  • [置顶] android点滴3
    Android判断是Pad或者手机publicbooleanisTabletDevice(){TelephonyManagertelephony=(TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);inttype=telephony.getPhoneType();if(type==TelephonyManager.PHON......
  • [置顶] android点滴1
    如何取得手机号码,手机串号,sim卡序列号?TelephonyManagertm=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);Stringdeviceid=tm.getDeviceId();Stringtel=tm.getLine1Number();//本机号码Stringimei=tm.getSimSerialN......
  • Android 方法引用数超过 65535 优雅解决
    随着应用不断迭代更新,业务线的扩展,应用越来越大(比如:集成了各种第三方SDK或者公共开源的Library文件、jar文件)这样一来,项目耦合性就很高,重复作用的类就越来越多了,SO:问题就来了。相信大家在做自己公司项目时,都有机会遇到下面的错误:UNEXPECTEDTOP-LEVELEXC......