接着上一篇《android O 对Service的限制【Background Execution Limits】》内容。java
咱们将解决下面两个问题,并提出一个有趣的问题。android
- app处在空闲期(idle)时,如何启动Service?
- 在App进入空闲期(idle)时,如何让Service不被当即回收?
JobService,能够再空闲时启动JobService,可是JobService存在诸多限制,详情请查阅官方文档app
以bind的方式启动Servicepost
APP处于空闲期时,虽然咱们不能直接调用Context.startService()方法,启动Service。this
可是咱们能够,以bind的形式启动Service。google
这种方式启动Service,将不受系统限制。spa
activity.getApplication().bindService(intent, connection, Service.BIND_AUTO_CREATE);
复制代码
前面咱们提到,普通的Service,在App进入空闲期时,将会被系统回收。code
咱们有一个修饰词 “普通的” Service。cdn
那什么样的Service是不普通的呢?换句话来讲,什么样的Service,在APP进入空闲期时不会被stop。对象
Application.bindService()绑定的Service。 对你没看错,必定要是Application对象绑定上的Service才不会被Stop。 必定要是Application对象bindService()
必定要是Application对象bindService()
必定要是Application对象bindService()
若是是仅仅是被Activity对象绑定的话,APP进入空闲期后,Service依然都会被stop。
Intent in = new Intent(MainActivityV2.this, Service4.class);
activity.getApplication().bindService(intent, connection, Service.BIND_AUTO_CREATE);
复制代码
咱们没法经过Intent与Service通讯。 例如:之前咱们能够经过 Context.startService(intent) 发送Inent给Service. 显然如今咱们不能调用 经过Context.startService(intent) 发送Inent给Service.
- 那么咱们应该如何发送Intent给Service,来实现与Service的通讯呢? 这是一个值得思考的问题。
下一篇一块儿来讨论这个有趣的问题。
赞美是一种美德,点个赞 再走啊,老铁