Service学习
定义:存在后台为我们执行一些耗时或者需要长时间执行的一些操作。
Service两种启动模式,同样都有生命周期,启动模式不同对应的生命周期也不同。
生命周期函数解析:
- onCreate():当Service第一次被创建后立即回调该方法,该方法在整个生命周期中只会调用一次
- onDestroy():当Service被关闭时回调该方法,该方法只会调用一次
- onStartCommand(intent,flag,startId):当客户端调用startService(Intent)方法时会回调,多次调用StartService方法,但不会再创建新的Service对象,而是继续复用前面产生的Service对象,但会继续回调onStartCommand()方法。
- IBinder onOnbind(intent):该方法是Service都必须实现的方法,该方法会返回一个IBinder对象,APP通过该对象与Service组件进行通信
- onUnbind(intent):当该Service上绑定的所有客户端都断开时会回调该方法
启动方式:
- StartService()启动Service
- BindService()启动Service
- PS:还有一种,就是启动Service后,绑定Service
BroadcastReceiver:
-
标准广播
完全异步执行的广播,在广播发出之后,所有的广播接收器会在同一时间接收到这条广播,无法被截断
-
有序广播
同步执行的广播,在广播发出之后,优先级高的广播接收器可以优先接收到广播
注册广播
不要再广播里添加过多的逻辑或者进行任何耗时操作,因为在广播中是不允许开辟线程的,当onReceiver()方法运行较长时间(超过10秒)还没有结束的话,那么程序会报错(ANR),广播更多的时候扮演的是一个打开其他组件的角色,比如启动Service,Notification提示,Activity等。
注册时间和接触注册时间:
一般我们在onResume的时候进行注册,在onDestory的时候解除注册。