Binance Casino,USDT娱乐,数字货币游戏,区块链游戏,BTC娱乐场,USDT投注,数字资产平台,体育娱乐,电子游艺,快速提现
在“开启服务生命周期之start方式“文档中我们使用startService开启一个服务,使用stopService停
止一个服务。下面我们通过绑定的方式来开启服务,然后对比这两种开启服务方式的区别。
在项目“01_服务的生命周期“中调整xml布局页面,效果如图1-1所示:
在该布局页面中添加按钮“绑定服务“和”解除绑定服务“,代码如例1-1所示:
编写按钮“绑定服务“和按钮”解除绑定服务“的点击事件bind,unbind。当点击”绑定服务“按钮,
bindService方法开启一个服务,查看文档对该方法的描述如图1-2所示:
图1-2可知:bindService方法开启一个关联当前应用程序的服务,当这个服务不存在时就会自动创建
conn:是一个ServiceConnection类型的对象并且不能为null,通过这个参数可以监听服务的开启和停
flags:绑定操作服务的选项,一般为BIND_AUTO_CREATE代表自动创建服务绑定。通过对该方法的分
析我们知道:使用bindService方法可以绑定一个指向的服务意图到本应用,并通过第二个参数conn来监
图1-3可知:ServiceConnection是一个接口类,用来监测当前应用服务的状态。如同系统的其他回调
函数一样,该类中的方法会在进程的主线.重写onBind和onUnbind方法
运行程序,当点击“绑定服务“按钮,logcat 打印出如图1-4 所示信息:
图1-6 可知:当再次点击“解除绑定“按钮时,程序报错。由于该应用程序已解除了服务的绑定,再
若点击“BACK“按钮,退出当前应用,此时服务又会怎样呢?参考图1-7:
图 1-7 可知:当点击“BACK“按钮退出当前应用程序时,程序会报错,然后执行 onUnbind 方法解除
服务绑定,最后再执行onDestroy 方法停止服务。出现错误提示为:主Activity 导致服务的泄露。出现这一
现象的原因:服务是绑定在这个Activity 中的,当点击”BACK“按钮时,Activity 就会销毁,因此服务绑定
在 Android 中,我们已经接触了两种开启服务的方式。这两种方式也可以混合使用,不过在使用的过