Android 中库与应用程序之间的通信

Communication between Library and App in Android

我正在开发一个本机 android SDK,理论上可以集成到各种应用程序中。

我需要SDK能够在验证某些条件时通知集成它的App。我不需要发送文本或某种结果,我只需要一种发送通知的方式。这就是为什么我想通过在库中发送并在应用程序中配置 BroadcastReceiver 来实现此 objective。但是,由于此 SDK 应该是独立于应用程序的,所以我不能将 MainActivity 的名称放入意图中。

所以,我想我可以使用 Messenger,但我不确定我是否正确理解了它的工作原理。据我了解,我的 sdk 应该公开如下方法:

provideHandler(处理程序 h)

应用程序可以通过它提供处理程序。有了这样的处理程序,我可以实例化一个 Messenger 对象并使用我的 Messenger 的 sendMessage 方法向应用程序发送消息。我想知道这是否是一种正确的方法,或者哪种方法适合我的用例。

库的好处在于它们的代码包含在依赖它们的应用程序中。所以你可以使用正常的回调机制来通信。

无需 IPC、BroadcastReceivers 或 Handlers 等

这是一个简单的入门:

图书馆:

interface MyListener {
    fun callbackThis()
}

class Library {

    var listener: MyListener? = null
    
    fun setListener(listener: MyListener) {
        this.listener = listener
    }

    fun stuffGetsDone() {
        // do your library stuff
        // call the app
        listener?.callbackThis()
    }

}

我的应用程序:

val yourLibrary = Library()

yourLibrary.setListener(object: MyListener() {
    override fun callbackThis() {
       // This is in your app, but called from the library
    }
})