我正在开发一个原生 Android SDK,理论上可以集成到各种应用程序中。
我需要SDK能够在某些条件得到验证时通知集成它的应用程序。我不需要发送文本或某种结果,我只需要一种发送通知的方法。这就是为什么我想通过在库中发送并在应用程序中配置 BroadcastReceiver 来实现此目标。但是,由于此 SDK 应该独立于应用程序,因此我无法将 MainActivity 的名称放入 Intent 中。
所以,我想我可以使用 Messenger,但我不确定我是否正确理解它应该如何工作。据我了解,我的 sdk 应该公开如下方法:
provideHandler(Handler 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
}
})
关于android - Android 中库与应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71847521/