Android DeadSystemException


83

Hiện tại, chúng tôi đang gặp sự cố DeadSystemExceptiontrong báo cáo sự cố HockeyApp của mình. Nó xuất hiện trên Android 7.0 và Android 7.1. Chúng tôi không gặp ngoại lệ này trong phiên bản trước của ứng dụng của chúng tôi (chúng hiện đều được người dùng sử dụng), vì vậy tôi đoán ngoại lệ này là do một số thay đổi mã. Nhưng dấu vết ngăn xếp không hữu ích cho việc này. Bất kỳ ý tưởng? Cảm ơn vì bất kỳ đề xuất.

Dấu vết ngăn xếp từ HockeyApp:

java.lang.RuntimeException: android.os.DeadSystemException
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3781)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: android.os.DeadSystemException
... 8 more

1
Vui lòng đăng mã và đề cập đến dòng mã xảy ra ngoại lệ.
Aishwarya Tiwari

4
Tôi sẽ nói rằng đó không phải là vấn đề của ứng dụng của bạn, như trong tài liệu: The core Android system has died and is going through a runtime restart. All running apps will be promptly killed.điều này chủ yếu xảy ra ở một nơi khác và ảnh hưởng đến ứng dụng của bạn?
Yazan

2
@AishwaryaTiwari Tôi không thể tạo lại lỗi cục bộ - vì vậy tôi không thể đăng bất kỳ đoạn mã nào. Tất cả những gì tôi có là dấu vết ngăn xếp từ HockeyApp
lồi

1
Đó là một ngoại lệ do Android Framework đưa ra, tôi rất tiếc không thể giúp bạn điều này.
Aishwarya Tiwari

1
Tôi muốn xem liệu có ai có thể tái tạo sự cố hay không. Các bước của repro sẽ được trao tiền thưởng
David Rawson

Câu trả lời:


70

Tài liệu dành cho nhà phát triển Android cho android.os.DeadSystemExceptionbiết những điều sau:

Hệ thống Android lõi đã chết và đang trải qua quá trình khởi động lại thời gian chạy. Tất cả các ứng dụng đang chạy sẽ bị giết ngay lập tức.

Các mã nguồn không giúp nhiều hơn nữa:

package android.os;
/**
 * The core Android system has died and is going through a runtime restart. All
 * running apps will be promptly killed.
 */
public class DeadSystemException extends DeadObjectException {
    public DeadSystemException() {
        super();
    }
}

Nhìn chung, có vẻ như điều này đang được hệ điều hành ném và không liên quan gì đến mã của chúng tôi.

Nhìn vào javadoc từ lớp cha, DeadObjectExceptionhãy ủng hộ lý thuyết này:

Đối tượng bạn đang gọi đã chết, vì quá trình lưu trữ của nó không còn tồn tại.


Tuy nhiên, nó có nghĩa là ứng dụng đã cố gắng làm điều gì đó trong trường hợp ngoại lệ này và hệ điều hành đã dừng nó? Ứng dụng của tôi có thể làm gì để tránh nó không?
nhà phát triển android

Theo tôi hiểu, đây không phải là điều chúng tôi có thể sửa chữa từ ứng dụng.
Richard Le Mesurier

13
Vì vậy, điều duy nhất chúng ta có thể làm là bỏ qua nó?
nhà phát triển android

2
Lỗi này là 5% khi Trình quản lý thông báo được xác định là androidx. Khi được định nghĩa là android% 1 là. Lỗi này chắc chắn là do lớp Trình quản lý thông báo đối với tôi. Nhưng tôi vẫn chưa tìm thấy nó.
Trk

1
@Trk Tôi thấy điều đó đã xảy ra khi cố gắng hiển thị Thông báo. Làm thế nào tôi có thể tránh được sự cố này? cố gắng bắt?
EricZhao

27

Một nguyên nhân là do lỗi trong dịch vụ thông báo của Android phiên bản 7 và 8.

Nguyên nhân là do sử dụng "kiểu rung" trong thông báo, điều này sẽ ném một ArrayOutOfBoundsException. Điều này dẫn đến toàn bộ hệ thống sụp đổ và đăng a DeadSystemException.

Để biết thêm chi tiết bạn có thể tham khảo bài viết này của Phương tiện tại đây .


Báo cáo khóa xác nhận bạn
Trk

13
Tôi không mua nó. Tôi thấy nhiều báo cáo về ngoại lệ này trong App Center và tất cả đều chạy trên Android 10, không phải Android 7 hoặc 8.
Justin

Tôi đồng tình với Justin, tôi đang thấy rất nhiều vấn đề này xuất hiện với các thiết bị chạy Android API 29 và chúng tôi không sử dụng tùy chọn rung trên các kênh thông báo.
Hrafn

16
Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException

Ngoại lệ này xảy ra trong một trong những ứng dụng tôi đang phát triển, nó xảy ra chủ yếu trong các thiết bị MI.

Sau khi gỡ lỗi, tôi thấy rằng tôi đang cố gắng khởi động một dịch vụ khác (Nói B) trong dịch vụ hiện tại (Nói A) từ một luồng nền, nhưng khi startService(itService)phương thức được gọi, dịch vụ A đã bị giết.

Giải pháp duy nhất tôi tìm thấy cho đến lúc này là kiểm tra xem dịch vụ hiện tại A có đang chạy hay không trước khi bạn bắt đầu một dịch vụ khác B. Tùy thuộc vào cách triển khai của bạn, bạn có thể sử dụng một trong các cách khác nhau để kiểm tra xem dịch vụ có đang chạy từ câu trả lời này hay không .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.