Ниже приведен пример реализации клиента и AndroidViewModel.Предполагая, что вся привязка и снятие привязки позаботились, является ли это хорошим способом общения со связанной службой из AndroidViewModel?
class ServiceViewModel(application: Application) : AndroidViewModel(application){
private var serviceClient = ServiceClient(application)
override fun onCleared() {
serviceClient.close()
println("cleared view model")
}
fun talkToService(){
serviceClient.executeSomeMethod()
}
}
class ServiceClient(private val context: Context) : ServiceConnection, AutoCloseable {
init {
bindService()
}
override fun close() {
unbindService()
}
//..onServiceConnected gives IBinder
//..onServiceDisconnected notifies
fun executeSomeMethod(){
binder.executeSomeServiceMethod()
}
}