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
}
})
我正在开发一个本机 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
}
})