android四大组件--service(一)service的启动

1.对于activity中耗时的操作,都应该放在service中,service组件能有效的把处理后台任务的应用逻辑和界面显示的代码分开。
2.有两种类型的service
①用来执行和用户输入无关的操作。 startService()
②由用户直接触发service。bindService()
3.对于service常用的生命周期就onCreate()和onDestroy(),在onCreate()方法中进行初始化耗时操作,然后在onDestroy()清空。
4.startService(),这个适合执行由用户触发并且运行时间不确定的操作,如果不听的调用startService()那么就会不停的回调onStartCommand()方法,并且可以调用stopService()停止服务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.bindService() unbindService() 这里是通过Binder在不同的组件之间记性数据传递。我们需要的是重写onBind()方法,能够在onBind(intent) 中获取到初始数据。 并且创建Binder对象,将当前的service的对象包裹起来返回给调用的组件。然后通过这个对象进行控制service的操作。在使用bindService()方法中,并不会调用onStartCommand()方法,也不会进行重复绑定调用onBind()方法。
创建service类
在这里插入图片描述
在这里插入图片描述
进行service的调用,需要在调用界面创建ServiceConnection对象。进行service的调用,需要在调用界面创建ServiceConnection对象。在连接成功的时候调用onServiceConnected方法。对于onServiceDisconnected()方法只有在极端的情况下才会调用,在解绑service的时候是不会调用的。
在这里插入图片描述
在这里插入图片描述
可以对service的极端情况进行处理。在这里service被终止的时候,应该会收到通知。此外还有其他的方法,比如pingBinder()和binderAlive()方法。
在这里插入图片描述
6.使用startForeground()方法,这样能提高service的优先级。但是必须绑定notification进行使用。
7.对于startService()的方法,那么与activity的通讯,一般是使用sendBroadcast.
对于使用bindService(),那么就通过持有service的对象,然后通过接口等进行通讯。

猜你喜欢

转载自blog.csdn.net/yuezheyue123/article/details/83011659