暴力测试Service

为了更好地了接服务Service的生命周期,采用暴力测试,一下会多次启动服务,绑定服务,不按常理走!
1个服务==>CoreService
2个活动==> FirstActivity和SecondActivity
这里写图片描述 这里写图片描述

测试1: 先启动,再绑定

启动FirstActivity

第1步:startService

第2步:bindService

第3步:多次bindService
多次绑定服务,没有打印,说明生命周期没走
第4步:多次startService

可以看到多次启动服务,只执行onStartCommand和onStart方法,注意startId是自增的!

点击跳转启动SecondActivity

第5步:,执行startService

第6步:bindService

如果已经Activity有绑定过了(未解绑),其它Activity在绑定只会执行onServiceConnected
第7步:退出SecondActivity

@Override
    protected void onDestroy() {
        super.onDestroy();
        unbindService(conn);
    }

退出时,解除绑定,没有打印,说明没有触发onServiceDisconnected
第7步:退出FirstActivity(第一个绑定的)
同样unbindService(conn)解除绑定


测试2: 先绑定,再启动

启动FirstActivity

第1步:bindService

第2步:startService

第3步:多次bindService
多次绑定服务,没有打印,说明生命周期没走
第4步: 同测试1#

点击跳转启动SecondActivity

第5步:同测试1#
第6步:同测试1#
第7步:退出FirstActivity(第一个绑定的)
同样unbindService(conn)解除绑定

这一步跟测试1是同样的结果,但是如果只有绑定而从没启动过服务,那结果还是一样吗?那放到测试3吧!


如果你绑定了服务,但是Activity退出的时候却没有unbindService,那么会抛个异常:

E/ActivityThread: Activity shone.mpchart.SecondActivity has leaked ServiceConnection shone.mpchart.SecondActivity$1@3a0389e1 that was originally bound here
              android.app.ServiceConnectionLeaked: Activity shone.mpchart.SecondActivity has leaked ServiceConnection shone.mpchart.SecondActivity$1@3a0389e1 that was originally bound here
      ...  

测试3: 只绑定,不启动

启动FirstActivity

第1步:bindService

第2步:退出,unbindService

所以跟测试1#比较,发现先绑定,如果后面再startService,那么unbindService的时候,不会触发onDestroy

测试4: 不管先绑定,再启动或者先启动,再绑定
这种是特殊情况
中间加入一个停止服务的步骤

mService.stopService(new Intent(FirstActivity.this, CoreService.class));

调了停止方法,服务却没有走任何生命周期,但是退出的时候

这里跟测试1#和测试2#对比一下,仅仅调了一下stopService,则退出的时候,解除绑定同样会服务退出!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值