[android] java.lang.AssertionError: Pausing an activity that is not the current activity, this is incorrect!

Đang mở
#54,121 3 bình luận 1 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
android, kotlin, react-native
Lĩnh vực
mobile-dev

Hướng nghiên cứu

Bắt đầu trong ReactHostImpl.kt tại onHostPause và tái hiện crash bằng branch rn-tester bắt buộc cùng flow chia đôi màn hình/chia sẻ được mô tả trong issue. Công việc được xem là hoàn tất khi nhiều instance ReactActivity ở foreground không còn kích hoạt assertion hoặc crash khi một activity bị pause; so sánh hành vi với pull request #54122 được liên kết.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Platform: Android Resolution: PR Submitted
Description

In our app's telemetry tools we are seeing crashes with the following stack:

java.lang.AssertionError: Pausing an activity that is not the current activity, this is incorrect! Current activity: ShareActivity Paused activity: MainActivity
    at com.facebook.infer.annotation.Assertions.assertCondition(Assertions.java:88)
    at com.facebook.react.runtime.ReactHostImpl.onHostPause(ReactHostImpl.java:347)
... full stack below

There is a bit of history around this issue:

And recently meta added changes to simply turn this assertion off by a feature flag:

For our use case the issue seems to caused by the fact that we have multiple ReactActivity instances.
The code in ReactHostImpl.kt is kind of build on the assumption that there will only ever be one active activity:

  • Historically the ReactInstance which ReactHost maintains was on the old arch bound to the ReactActivity, so it made sense that it was just caring about one activity
  • It's very well possible to have multiple activities in the foreground. Examples are share extensions, picture in picture mode, split screen app usage (and probably other stuff i can't think of right now)

I opened a PR which addresses this behaviour:

Steps to reproduce
  1. Clone this branch: https://github.com/hannojg/react-native/tree/fix/android-onpause-host-properly-reproduction
  2. It contains a new activity that you can share to: https://github.com/hannojg/react-native/blob/96defe6865a37e47068fdbc0a86df746bb8998aa/packages/rn-tester/android/app/src/main/AndroidManifest.xml#L92-L111
  3. Follow the reproduction steps from this video:
  • Open the rn-tester app
  • Move it to a split screen view
  • As second view for split screen choose gallery
  • Share a picture from gallery to the RNTester app
  • Now both the RNTesterActivity and RNTesterShareActivity will be in foreground and in resume
  • In the rn-tester app go to API > Share
  • Share text from the first button. Opening a share dialog will pause the RNTesterActivity, which will lead to a crash the whole app, as the last active activity tracked was RNTesterShareActivity

https://github.com/user-attachments/assets/966dd70e-c65f-4460-8749-ce332c1d51c2

React Native Version

0.82.0

Affected Platforms

Runtime - Android

Output of npx @react-native-community/cli info
System:
  OS: macOS 15.7
  CPU: (14) arm64 Apple M4 Pro
  Memory: 640.88 MB / 48.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.14.0
    path: /nix/store/04fc23dsflkxl4s9p6lkigia1hq3vjp2-nodejs-22.14.0/bin/node
  Yarn:
    version: 1.22.19
    path: ~/.nix-profile/bin/yarn
  npm:
    version: 10.9.2
    path: /nix/store/04fc23dsflkxl4s9p6lkigia1hq3vjp2-nodejs-22.14.0/bin/npm
  Watchman:
    version: 2024.03.11.00
    path: /Users/hannogodecke/Documents/discord-2/.local/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/hannogodecke/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.5
      - iOS 18.5
      - macOS 15.5
      - tvOS 18.5
      - visionOS 2.5
      - watchOS 11.5
  Android SDK:
    API Levels:
      - "31"
      - "35"
      - "36"
    Build Tools:
      - 34.0.0
      - 35.0.0
      - 35.0.1
      - 36.0.0
    System Images:
      - android-31 | ARM 64 v8a
      - android-31 | Google APIs ARM 64 v8a
      - android-31 | Google Play ARM 64 v8a
      - android-31 | Google APIs ATD ARM 64 v8a
      - android-35 | Google APIs ARM 64 v8a
      - android-35 | Google Play ARM 64 v8a
      - android-35 | Pre-Release 16 KB Page Size Google Play ARM 64 v8a
      - android-35 | Pre-Release 16 KB Page Size Google APIs ARM 64 v8a
      - android-35 | Google APIs ATD ARM 64
      - android-36 | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2025.1 AI-251.26094.121.2512.13930704
  Xcode:
    version: 16.4/16F6
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.15
    path: /usr/bin/javac
  Ruby:
    version: 3.3.4
    path: /Users/hannogodecke/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 19.1.1
    wanted: 19.1.1
  react-native: Not Found
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: Not found
  newArchEnabled: Not found
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

*Building the rn-tester app from main*
Stacktrace or Logs
java.lang.AssertionError: Pausing an activity that is not the current activity, this is incorrect! Current activity: ShareActivity Paused activity: MainActivity
    at com.facebook.infer.annotation.Assertions.assertCondition(Assertions.java:88)
    at com.facebook.react.runtime.ReactHostImpl.onHostPause(ReactHostImpl.java:347)
    at com.facebook.react.ReactDelegate.onHostPause(ReactDelegate.java:139)
    at com.facebook.react.ReactActivityDelegate.onPause(ReactActivityDelegate.java:166)
    at com.discord.react_activities.ReactActivity$ActivityDelegate.onPause(ReactActivity.kt:133)
    at com.facebook.react.ReactActivity.onPause(ReactActivity.java:55)
    at com.discord.react_activities.ReactActivity.onPause(ReactActivity.kt:82)
    at android.app.Activity.performPause(Activity.java:9587)
MANDATORY Reproducer

https://github.com/hannojg/react-native/tree/fix/android-onpause-host-properly-reproduction

Screenshots and Videos

No response

Ngôn ngữ chính
C++
Star
127k
Fork
25.3k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của react/react-native

Tất cả issue của react/react-native

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.