客服 拼多多砍价dy抖音ks快手 自助商城点击进入
Service 概述
与开发一个Activity类似,它需要继承Service这个抽象类,并在实现类中,需要重写一些回调方法,用于处理Service的生命周期各部分的操作。而Service也是继承自Context,因此它也可以调用Context里定义的如getResource()、getContentResolver()等方法。
Service中定义的生命周期方法,对Service服务的开发大部分工作就围绕以下几个方法进行操作:
通过服务的启动方式与适用范围,可将服务分为两类服务:
虽然上面提到了服务有两种类别,但是一个服务类所要继承的类是一样的,都是Service类。也就是说,一个服务,可以包含上面两种运行方式的服务,只是与它重载的方法有关,如果重写了onStartCommand()即支持启动服务,如果重写onBiind()即支持绑定服务,所以如果同时重载实现这两个方法即可实现两种服务。
service 服务 start 的测试一、 在 MainActivity 中创建方法 startService,启动服务:
public void startService(View view) { Intent intent = new Intent(); intent.setClass(MainActivity.this, NormalServices.class); startService(intent); }
二、 在 MainActivity 中创建方法 stopService,停止服务:
public void stopService(View view) { Intent intent = new Intent(); intent.setClass(MainActivity.this, NormalServices.class); stopService(intent); }
三、 运行的结果如下:
03-24 19:28:40.130 9986-9986/com.example.linux.serviceslifetest I/NormalServices: NormalServices constructor. 03-24 19:28:40.130 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on create. 03-24 19:28:40.130 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on start command.
03-24 19:31:18.730 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on destory.
03-24 19:32:23.660 9986-9986/com.example.linux.serviceslifetest I/NormalServices: NormalServices constructor. 03-24 19:32:23.660 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on create. 03-24 19:32:23.660 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on start command.
03-24 19:33:06.350 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on start command.
03-24 19:33:30.240 9986-9986/com.example.linux.serviceslifetest I/NormalServices: on destory.
四、 对于上述结果的分析:
service的构造方法:
oncreate方法
onStartCommand方法
on destory
service 生命周期一、 启动与停下服务:
一旦在项目的任何位置调用了Context 的startService()方法,相应的服务就会启动起来,并回调onStartCommand()方法。如果这个服务之前还没有创建过service技术,onCreate()方法会先于onStartCommand()方法执行。服务启动了之后会一直保持运行状态,直到stopService()或stopSelf()方法被调用。注意虽然每调用一次startService()方法,onStartCommand()就会执行一次,但实际上每个服务都只会存在一个实例。所以不管你调用了多少次startService()方法,只需调用一次stopService()或stopSelf()方法,服务就会停止下来了。
二、 绑定与解绑服务:
另外,还可以调用Context 的bindService()来获取一个服务的持久连接,这时就会回调服务中的onBind()方法。类似地,如果这个服务之前还没有创建过,onCreate()方法会先于onBind()方法执行。之后,调用方可以获取到onBind()方法里返回的IBinder 对象的实例,这样就能自由地和服务进行通信了。只要调用方和服务之间的连接没有断开,服务就会一直保持运行状态。
三、 启动与绑定服务:
当调用了startService()方法后,又去调用stopService()方法,这时服务中的onDestroy()方法就会执行,表示服务已经销毁了。类似地,当调用了bindService()方法后,又去调用unbindService()方法,onDestroy()方法也会执行,这两种情况都很好理解。但是需要注意,我们是完全有可能对一个服务既调用了startService()方法,又调用了bindService()方法的,这种情况下该如何才能让服务销毁掉呢?根据Android 系统的机制,一个服务只要被启动或者被绑定了之后,就会一直处于运行状态,必须要让以上两种条件同时不满足,服务才能被销毁。所以,这种情况下要同时调用stopService()和unbindService()方法,onDestroy()方法才会执行。
特别注意:
1、你应当知道在调用 bindService 绑定到Service的时候,你就应当保证在某处调用 unbindService 解除绑定(尽管 Activity 被 finish 的时候绑定会自动解除,并且Service会自动停止);
2、你应当注意 使用 startService 启动服务之后,一定要使用 stopService停止服务,不管你是否使用bindService;
3、同时使用 startService 与 bindService 要注意到service技术,Service 的终止,需要unbindService与stopService同时调用,才能终止 Service,不管 startService 与 bindService 的调用顺序,如果先调用 unbindService 此时服务不会自动终止,再调用 stopService 之后服务才会停止,如果先调用 stopService 此时服务也不会终止,而再调用 unbindService 或者 之前调用 bindService 的 Context 不存在了(如Activity 被 finish 的时候)之后服务才会自动停止;
4、当在旋转手机屏幕的时候,当手机屏幕在“横”“竖”变换时,此时如果你的 Activity 如果会自动旋转的话,旋转其实是 Activity 的重新创建,因此旋转之前的使用 bindService 建立的连接便会断开(Context 不存在了),对应服务的生命周期与上述相同。
5、在 sdk 2.0 及其以后的版本中,对应的 onStart 已经被否决变为了 onStartCommand,不过之前的 onStart 任然有效。这意味着,如果你开发的应用程序用的 sdk 为 2.0 及其以后的版本,那么你应当使用 onStartCommand 而不是 onStart。
文末
我从去年开始接触Android开发,以下结合自己的一点项目经验,同时参考了Google的优化文档和网上的诸多技术大牛给出的意见,整理出这份电子手册《Android 开发学习笔记》,私信发送 "进阶" 即可 免费获取;这份笔记里面汇总了我从事 Android 开发行业以来遇到的 技术难点问题,相信可以帮助到大家
资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下~
你的支持,就是我的动力;祝各位前程似锦
本文由2218329273于2022-12-27发表在龙哥云资源网,如有疑问,请联系我们。本文链接:https://www.longgeyun.com/knowledge/41222.html
上一篇移动送5g手机活动微博小号自助下单平台
下一篇维也纳技术大学 qq买赞绝地求生外挂卡盟
快手点赞业务 -快手评论点赞网址 - 快手1元1w粉
免费业务自助下单平台 -抖音播放量平台 - 抖音1元1w粉
赞网快手 -快手赞在线下单 - 快手播放量免费网站
赞快手赞网站低价 -快手在线业务平台 - 快手秒业务网站福利
快手代网站全网最低 -快手赞涨粉 - 抖音作品双击网址
快手20元1000粉丝网站 -快手点一个赞一块钱的平台 - 抖音质量活跃粉
快手人气自助
农业气象灾害指标 快手粉丝网站平台
Pr2020零基础快速入门
文字转语音App最新版3.0
APP下载页源码-带后台