🤖
Android Tips
  • 🤖AOSP
    • Clone AOSP repository
    • Directory Structure
    • Setup IDE
      • Setup VSCode
    • Build
      • BluePrint for Application Project
      • BluePrint for Android Library Project
    • Manifest
      • sharedUserId
      • persistant
  • Gradle
    • Create Custom Build Config Variables
    • Create Custom manifest Variables
    • Make app debugable
  • Android Process
    • Find a process by name
    • Kill a process by Id
  • Catch any exception in Android
  • 🎨Theming
    • Theming
      • RRO
        • RRO Internals
        • RRO classes in AOSP
        • RRO Example
        • RRO Permission
      • Fabricated RRO (FRRO)
        • FRRO Example
        • Permission
  • Lifecycle
    • Basics
      • Lifecycle
        • Activity
        • Fragment
          • Fragment add
    • Lifecycle Aware Custom Class
  • â„šī¸Interview
    • Interview Questions
    • Architecture Pattern
      • MVC Architecture pattern
      • MVP Architecture Pattern
      • MVVM Architecture Pattern
  • â†”ī¸AIDL
    • Simple AIDL Communication
      • Creating an AIDL file
      • Create an AIDL server
      • Create AIDL client
      • Limitations
    • AIDL with callback
      • Create AILD interfaces
      • Create an AIDL server
      • Create AIDL client
Powered by GitBook
On this page
  1. AIDL
  2. AIDL with callback

Create an AIDL server

Server which will expose a service

// CalculatorImpl.kt
package com.tejpratapsingh.aidlserver.aidl

import com.tejpratapsingh.aildlib.ICalculator
import com.tejpratapsingh.aildlib.ICalculatorCallback
import java.util.concurrent.CopyOnWriteArrayList

object CalculatorImpl : ICalculator.Stub() {

    private const val TAG = "CalculatorImpl"

    private val callbacks: CopyOnWriteArrayList<ICalculatorCallback> = CopyOnWriteArrayList()

    override fun registerListener(cb: ICalculatorCallback) {
        callbacks.addIfAbsent(cb)
    }

    override fun unRegisterListener(cb: ICalculatorCallback) {
        callbacks.remove(cb)
    }

    override fun add(a: Int, b: Int) {
        callbacks.forEach {
            it.onAdded(a + b)
        }
    }
}
// CalculatorService.kt
package com.tejpratapsingh.aidlserver.aidl

import android.app.Service
import android.content.Intent
import android.os.IBinder

class CalculatorService : Service() {
    override fun onBind(intent: Intent): IBinder {
        return CalculatorImpl
    }
}
PreviousCreate AILD interfacesNextCreate AIDL client

Last updated 1 year ago

â†”ī¸