1

I have an android kotlin application that is trying to bind to a service. My main activity looks like this:

class MainActivity : AppCompatActivity(), View.OnClickListener, DevicesRecyclerViewAdapter.ItemClickListener {

private var  mMyService: MyService? = null
private var isBind = false
private lateinit var mServiceConnection: ServiceConnection

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    mServiceConnection = object : ServiceConnection {
        override fun onServiceConnected(componentName: ComponentName, service: IBinder) {

            mMyService = (service as MyService.LocalBinder).getService()
        }

        override fun onServiceDisconnected(componentName: ComponentName) {
            mMyService = null
        }

    }
    initService()

 }

fun initService() {

        if (!isBind) {
            val gattServiceIntent = Intent(this, MyService::class.java)
               bindService(gattServiceIntent, mServiceConnection,
                    Context.BIND_AUTO_CREATE)
            isBind = true

        }
   }

}

And the service itself looks like this:

class MyService : Service() {

var mBinder: IBinder = LocalBinder()

override fun onBind(p0: Intent?): IBinder? {
   return mBinder
}

 inner class LocalBinder : Binder(){
   internal fun getService(): MyService {
     return this@MyService
   }
 }

}

However the code never seems to get to onServiceConnected. Am I missing something? Thanks!

Nespony
  • 1,253
  • 4
  • 24
  • 42

0 Answers0