Service类:
class UtilsService : Service(){
private var mBinder = CommBinder(this@UtilsService)
companion object {
lateinit var utilsService: UtilsService
var isInitializedService : Boolean =false
get(){
returen this::utilsService.isInitialized
}
fun isInitService()=this::utilsService.isInitialized
}
internal inner class CommBinder(private val service: UtilsService) : Binder(){
fun getService() : UtilsService{
return service
}
}
override fun onBind(intent: Intent?): IBinder? {
return mBinder
}
override fun onCreate() {
super.onCreate()
}
override fun onDestroy() {
super.onDestroy()
}
}
绑定:
val intent = Intent(this, UtilsService::class.java)
bindService(intent, utilsConnection, Context.BIND_AUTO_CREATE)
private val utilsConnection: ServiceConnection =
object : ServiceConnection {
override fun onServiceConnected(name: ComponentName, service: IBinder) {
UtilsService.utilsService= (service as UtilsService.CommBinder).getService()
}
override fun onServiceDisconnected(name: ComponentName) {
}
}
使用Service里的方法:
UtilsService.utilsService.方法名()
补充:
添加这几行代码是为了获取Serivce的对象是否被初始化了(因为lateinit的对象都不为空的,所以加上这个)
var isInitializedService: Boolean = false
get() {
return this::utilsService.isInitialized
}
或者使用
fun isInitService()=this::utilsService.isInitialized也行
而使用 ar isInitializedService: Boolean =this::utilsService.isInitialized是编辑报错的。所以不能使用这个
this后一定要使用::不然会找不到isInitialized这个方法的 。