You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Expo包的ReactActivityLifecycleListener中获取当前Activity?

Expo模块后台接收Intent问题解决思路

我正在开发一个利用Intents接收其他应用内容的Expo模块,目前遇到的问题是应用在后台运行时,分享Intent无法生效。要解决这个问题,需要监听Android生命周期,核心逻辑是在onNewIntent中获取当前Activity并更新Intent,目标代码逻辑如下:

protected void onNewIntent(Intent intent) {
  Activity mActivity = getCurrentActivity();
  if(mActivity == null) { return; }
  mActivity.setIntent(intent);
}

但在Expo包的MyLibReactActivityLifecycleListener.kt中,需要通过以下方式获取并维护当前Activity的引用:

完整实现代码

android/src/main/java/expo/modules/mylib/MyLibReactActivityLifecycleListener.kt
package expo.modules.mylib

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import expo.modules.core.interfaces.ReactActivityLifecycleListener

class MyLibReactActivityLifecycleListener : ReactActivityLifecycleListener {
  private var currentActivity: Activity? = null

  override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
    currentActivity = activity
  }

  override fun onNewIntent(intent: Intent): Boolean {
    currentActivity?.let { activity ->
      // 更新Activity的Intent,确保后续能获取到最新的分享内容
      activity.setIntent(intent)
      // 这里可以添加解析Intent、通知JS层等自定义逻辑
      return true // 返回true表示已处理该Intent
    }
    return false // 无可用Activity时返回false
  }

  override fun onActivityDestroyed(activity: Activity) {
    // 清空引用,避免内存泄漏
    if (currentActivity === activity) {
      currentActivity = null
    }
  }

  // 实现其他必填的生命周期方法
  override fun onActivityResumed(activity: Activity) {}
  override fun onActivityPaused(activity: Activity) {}
  override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
  override fun onActivityStarted(activity: Activity) {}
  override fun onActivityStopped(activity: Activity) {}
}

关键说明

  1. 在onActivityCreated中保存当前Activity的引用,确保后续能获取到有效的Activity实例
  2. 在onNewIntent中使用保存的引用调用setIntent(intent),更新Activity的Intent
  3. 在onActivityDestroyed中清空引用,防止内存泄漏

这样就能在应用处于后台时,正确捕获onNewIntent事件并更新Intent,保证分享内容能被正常处理。

内容的提问来源于stack exchange,提问作者hkropp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:53:36