当前位置:首页 > 知识库 > 正文

service技术 封号网站24小时自助下单诸葛亮惩罚黄月英小说

客服   service技术 封号网站24小时自助下单诸葛亮惩罚黄月英小说  第1张 拼多多砍价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 开发行业以来遇到的 技术难点问题,相信可以帮助到大家

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下~

你的支持,就是我的动力;祝各位前程似锦

发表评论

最新文章

推荐文章