Andrid服务有两个启动方法:第一个startservice和第二个bindservice。你知道这两种启动方式的区别吗?让我们跟着边肖学。
Android服务生命周期可以促进移动设备的创新,让用户体验到最好的移动服务。只有当广播接收器执行此方法时,它才是活动的,当onReceive()返回时,它是非活动的。
如果没有程序停止它或它自己停止,服务将一直运行。在此模式下,服务通过调用Context.startService()启动,并在context.stopservice()处停止。服务可以通过调用Android服务生命周期()或Service . stopselfrequency()来自行停止。无论调用多少次startService(),都只需要调用一次stopService()就可以停止服务。
可以通过接口被外部程序调用。外部程序建立到服务的连接,并通过该连接操作服务。连接调用从Context.bindService()开始,到Context.unbindService()结束。多个客户端可以绑定到同一个服务,如果服务没有启动,bindService()可以选择启动它。
服务不能自己运行。您需要通过调用Context.startService()或Context.bindService()方法来启动服务。这两种方法都可以启动服务,但它们用于不同的情况。使用startService()方法启用该服务。调用者和服务之间没有连接。即使调用者退出,服务仍然运行。使用bindService()方法启用服务,调用者和服务绑定在一起,调用者一旦退出,服务就会终止,其特点是“不需要同时活,但必须同时死”。
如果您计划用Context.startService()方法启动服务,系统将首先调用服务的onCreate()方法,然后在服务未创建时调用onStart()方法。如果在调用startService()方法之前已经创建了服务,多次调用startService()方法不会导致多次创建服务,但会导致多次调用onStart()方法。startService()方法启动的服务只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。
如果打算使用Context.bindService()方法启动服务,那么在没有创建服务的时候,系统会先调用服务的onCreate()方法,然后调用onBind()方法。此时调用者和服务绑定在一起,调用者退出时,系统会先调用服务的onUnbind()方法,再调用onDestroy()方法。如果在调用bindService()方法之前已经绑定了服务,多次调用bindService()方法不会导致多次创建服务和绑定(也就是说,不会多次调用onCreate()和onBind()方法)。如果调用者想要解除绑定的服务,他可以调用unbindService()方法,这也将导致系统调用服务的onbinding ()-ondestroy()方法。
总结:两种启动方法和服务的差异
服务的生命周期方法onCreate,onStart,onDestroy
启动服务有两种方式,它们对服务生命周期的影响是不同的。
1 通过startService
服务将经历onCreate-onStart。
当你停下来的时候,你就直接毁了它。
如果调用者没有调用stopService就直接退出,服务会一直在后台运行。下次打电话的人起来,你可以停止服务。
2 通过bindService
当服务的调用者被绑定到服务时,服务将只运行onCreate。
当呼叫者退出时,服务将调用onUnbind-onDestroyed。所谓“捆绑在一起”,就是一起生存。这种方式也可以让
例如,调用者调用服务上的其他方法。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。