Network plugin handleOnResume throws ANR
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 58/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- java
- Lĩnh vực
- mobile-dev, networking
Hướng nghiên cứu
Bắt đầu tại network/android/src/main/java/com/capacitorjs/plugins/network/NetworkPlugin.java ở handleOnResume và kiểm tra Network.getNetworkStatus, đặc biệt là lệnh gọi ConnectivityManager được hiển thị trong ANR trace. Kiểm tra cách plugin này hoặc repository phân phối công việc chạy nền trước khi chọn một đường dẫn thực thi. Hoàn tất có nghĩa là việc xử lý resume không còn chặn main thread trong khi vẫn giữ nguyên hành vi của trạng thái mạng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The network plugin's handleOnResume calls getNetworkStatus from main thread, which can be a slow operation:
https://github.com/ionic-team/capacitor-plugins/blob/2be8127d580a847c832698169893079b3960b9f3/network/android/src/main/java/com/capacitorjs/plugins/network/NetworkPlugin.java#L60
I've seen a crashlytics report of an ANR thrown because of this:
android.os.BinderProxy.transactNative (Native method)
This Binder call may be taking too long, causing the main thread to wait, and triggering the ANR.
android.os.BinderProxy.transact (BinderProxy.java:659)
android.net.IConnectivityManager$Stub$Proxy.getActiveNetwork (IConnectivityManager.java:1798)
android.net.ConnectivityManager.getActiveNetwork (ConnectivityManager.java:1549)
com.capacitorjs.plugins.network.Network.getNetworkStatus (Network.java:77)
com.capacitorjs.plugins.network.NetworkPlugin.handleOnResume (NetworkPlugin.java:60)
com.getcapacitor.Bridge.onResume (Bridge.java:1347)
com.getcapacitor.BridgeActivity.onResume (BridgeActivity.java:98)
android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1490)
android.app.Activity.performResume (Activity.java:8281)
android.app.ActivityThread.performResumeActivity (ActivityThread.java:4960)
android.app.ActivityThread.handleResumeActivity (ActivityThread.java:5018)
android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:60)
android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:2374)
android.os.Handler.dispatchMessage (Handler.java:106)
android.os.Looper.loopOnce (Looper.java:233)
android.os.Looper.loop (Looper.java:344)
android.app.ActivityThread.main (ActivityThread.java:8249)
java.lang.reflect.Method.invoke (Native method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:589)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1071)
Perhaps this call should make from a background thread like this?
@Override
public void handleOnResume() {
super.handleOnResume();
// Dispatch heavy operations off the Main thread
CapacitorJS.getEngine().executeOnBackgroundThread(() -> {
// Your background work here
});
}
``
- Ngôn ngữ chính
- Java
- Star
- 687
- Fork
- 691
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ionic-team/capacitor-plugins
-
triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
ionic-team/capacitor-plugins#2616 ·
-
[@capacitor/app] iOS: 'Expression implicitly coerced from String? to Any' warning in getAppLanguageĐang mởtriage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
ionic-team/capacitor-plugins#2604 ·
-
bug(network): Android networkStatusChange re-queries the active network inside callbacks and fires on every capability changeCó thể đã có người làm @kcjonson đã nhận 4 ngày trước. Đang mởplatform: android
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 25/100
ionic-team/capacitor-plugins#2621 ·
-
bug(network): iOS getStatus() returns the last reachability callback value instead of reading current flagsCó thể đã có người làm @kcjonson đã nhận 4 ngày trước. Đang mởplatform: ios
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
ionic-team/capacitor-plugins#2620 ·
-
platform: android platform: ios
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 24/100
ionic-team/capacitor-plugins#2619 ·
Tất cả issue của ionic-team/capacitor-plugins
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
apache/rocketmq-dashboard#7361 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Type/Improvement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
ballerina-platform/static-code-analysis-tool#140 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
atomityhq/blog-cms#82 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ready-for-triage triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
RedHatInsights/notifications-backend#5080 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày