4

仅供参考:我是 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的事情)

问题

  1. 如何通过 Intent 传递 Promise 类型?
  2. 还有其他方法可以通过 Promise 吗?除了意图。
4

0 回答 0