服务与活动的绑定:UNbindService之后,service对象仍然存在而且能用 晕

绑定:

在这里插入图片描述

执行bindService方法:第一个参数为intent对象,第二个参数为serviceconnection实例,第三个参数为标志位:BIND_AUTO_CREATE 表示在活动与服务进行绑定后自动创建服务,这样会执行service的onCreate方法但是不会执行onStartCommand方法。

serviceConnection:

在这里插入图片描述

点击绑定,然后再点击解绑,即先执行bindService再执行unbindservice:
在这里插入图片描述

可以看出来是先执行了onCreate、再执行了onBind,在onBind里面返回了一个IBinder对象的实例给Activity,然后点击unbindservice之后解绑,执行了onDestroy销毁动作

但是!!!!

内个实验四线程的第三个实验,它把Service和Activity进行绑定,指导书的代码是在执行完unbindService(解除绑定)之后把Activity中之前通过bindService–>ServiceConnection–>onServiceConnected获取的Service对象手动置为null了,然后在计算按键的触发事件上写的也是“如果当前这个service对象不null”的话才去计算。但是如果在UNbindService方法之后不去给service对象置null的话,在点击取消绑定之后Service确实执行了onDestroy按说是被销毁了,但是再点击计算按键的时候依然可以进行计算,这个service对象仍然存在,甚至于如果不是通过绑定获得的service对象而是直接随便new一个的话,依然可以执行service中的计算的方法(就像在调用一个类的方法一样),这这。。。只针对这个实验来看,绑定没意义啊

通过bindService–>ServiceConnection–>onServiceConnected获取的Service对象

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

随便new一个service对象:

在这里插入图片描述
在这里插入图片描述

前面这两种可以说效果一样。。。。弄不太懂咋回事
posted @ 2023-10-10 15:56  在天边偷看小天使  阅读(22)  评论(0)    收藏  举报  来源