Android Service的生命周期

Service作为Android四大组件之一,应用非常广泛。 
 和activity一样,service也有一系列的生命周期回调函数,你可以实现它们来监测service状态的变化,并且在适当的时候执行适当的工作。

服务一般分为两种:

1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。 在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次 stopService()来停止。

2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服 务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加 载它。 
提供给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。

Android Service的生命周期
说到service生命周期,我们来建个类继承一下service看看

周期图:

public class DemoService extends Service {


    @Override
    public void onCreate() {
        super.onCreate();
        // The service is being created
        创建服务
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
        // The service is starting, due to a call to startService()
        开始服务
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
        绑定服务
        // A client is binding to the service with bindService()
    }

    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
        // All clients have unbound with unbindService()
        解绑服务
    }

    @Override
    public void onRebind(Intent intent) {
        super.onRebind(intent);
        // A client is binding to the service with bindService(),
        // after onUnbind() has already been called
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        销毁服务
        // The service is no longer used and is being destroyed
    }
 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
如何启动服务,外部方法有哪些?
startService(),启动服务 
stopService(),停止服务 
bindService(),绑定服务 
unbindService(),解绑服务

生命周期方法简单介绍
startService()
作用:启动Service服务 
手动调用startService()后,自动调用内部方法:onCreate()、onStartCommand() 
如果一个service被startService多次启动,onCreate()只会调用一次 
onStartCommand()调用次数=startService()次数

stopService()
作用:关闭Service服务 
手动调用stopService()后,自动调用内部方法:onDestory() 
如果一个service被启动且被绑定,如果没有在绑定的前提下stopService()是无法停止服务的。

bindService()
作用:绑定Service服务 
手动调用bindService()后,自动调用内部方法:onCreate()、onBind()

unbindService()
作用:解绑Service服务 
手动调用unbindService()后,自动调用内部方法:onCreate()、onBind()、onDestory()

注意
startService()和stopService()只能开启和关闭Service,无法操作Service; 
bindService()和unbindService()可以操作Service

startService开启的Service,调用者退出后Service仍然存在; 
BindService开启的Service,调用者退出后,Service随着调用者销毁。

以上是对服务的简单讲述,接下来会讲解更多。
--------------------- 
作者:码蛋蛋 
来源:CSDN 
原文:https://blog.csdn.net/u013933720/article/details/78260446 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值