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

标签 android ipc

我正在开发一个原生 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/

相关文章:

c - unlink() 后从 FIFO 读取

c# - C#和C++之间的进程间通信

Android:如何防止从一个小部件启动一个 Activity 的多个实例?

java - SQLite 高分,CursorIndexOutOfBounds - Android

c# - 如何保护手游的时效存档

android - ViewPager中如何不刷新页面

java - 从外部向 C++/Qt 应用程序发送消息?

android - 在android中将对象从一个应用程序传递到另一个应用程序

java 将十六进制 NCR 文本转换为 unicode 字符

c - 使用 IPC 在 while 循环内重定向 stdin