仅供参考:我是 Android 世界的新手。
我想做什么?
我正在为 React Native Android 使用本机模块。我正在使用本机承诺而不是回调来执行一些异步任务。简单易行。
详细地
我有一个名为“ReactNativeBridge”的本机模块,它有一堆标有标记的方法,@ReactMethod
因此可以从 React Native 端访问它们。
class ReactNativeBridge(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
@ReactMethod
printImage(imageUrl: String, promise: Promise) {
val currentActivity = currentActivity
if (currentActivity == null) {
promise.reject("Activity doesn't exist")
}
// Start activity which takes promise as an argument
val intent = Intent(reactApplicationContext.applicationContext, PrintActivity::class.java).apply {
putExtra(EXTRA_PRINT_DATA, somePrintData)
putExtra(EXTRA_PRINT_PROMISE, promise) // <---- here is the problem
}
currentActivity.startActivity(intent)
} }
如您所见,我想在这些方法中的每一个中启动一个新的 Android 活动,并通过 Intents 将Promise作为参数传递给这些活动。但我无法通过 Intent 传递承诺,因为并非所有数据类型都可以通过 Intent 传递。我检查了promise的类型,它是一个接口。
这就是Promise接口的外观,
我知道我们不能通过接口,因为它是一个抽象的东西(比如蓝图)。
** 如果您的答案是“将接口扩展为可序列化”,请记住我无法修改 Promise 接口。(这是Facebook的事情)
问题
- 如何通过 Intent 传递 Promise 类型?
- 还有其他方法可以通过 Promise 吗?除了意图。