Android DeadSystemException


86

Şu anda, DeadSystemExceptionHockeyApp kilitlenme raporlarımızda bir sorun yaşıyoruz. Android 7.0 ve Android 7.1'de oluşur. Uygulamamızın önceki sürümünde bu istisnayı yaşamıyoruz (şu anda ikisi de kullanıcılar tarafından kullanılıyor), bu nedenle bu istisnanın bazı kod değişikliklerinden kaynaklandığını tahmin ediyorum. Ancak yığın izleme bunun için pek yararlı değildir. Herhangi bir fikir? Önerileriniz için teşekkürler.

HockeyApp'tan yığın izleme:

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
Lütfen kodu gönderin ve istisnanın meydana geldiği kod satırını belirtin.
Aishwarya Tiwari

4
Dokümanlardaki gibi uygulamanızın sorunu olmadığını söyleyebilirim: The core Android system has died and is going through a runtime restart. All running apps will be promptly killed.bu çoğunlukla başka bir yerde oluyor ve uygulamanızı etkiliyor mu?
Yazan

2
@AishwaryaTiwari Hatayı yerel olarak yeniden oluşturamıyorum - bu yüzden herhangi bir kod parçası gönderemiyorum. Tek sahip HockeyApp yığın izidir
convexHull

1
Bu, Android Framework tarafından atılan bir istisna, üzgünüm size bu konuda yardımcı olamıyorum.
Aishwarya Tiwari

1
Kazayı yeniden oluşturabilecek birileri olup olmadığını merak ediyorum. Repro 'adımları ödülle ödüllendirilecek
David Rawson

Yanıtlar:


71

İçin Android Geliştirici belgeleri android.os.DeadSystemExceptionşunları söylüyor:

Çekirdek Android sistemi öldü ve çalışma zamanı yeniden başlatılıyor. Çalışan tüm uygulamalar derhal öldürülür.

Kaynak kodu çok daha yardımcı olmaz:

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();
    }
}

Genel olarak, bu işletim sistemi tarafından atılıyor gibi görünüyor ve kodumuzla hiçbir ilgisi yok.

Javadoc'a süper sınıftan bakıldığında, DeadObjectExceptionbu teori desteklenir:

Barındırma işlemi artık mevcut olmadığı için aradığınız nesne öldü.


Bu, uygulamanın bu istisna sırasında bir şeyler yapmaya çalıştığı ve işletim sisteminin onu durdurduğu anlamına mı geliyor? Uygulamamın bundan kaçınmak için yapabileceği herhangi bir şey var mı?
android geliştiricisi

Anladığım kadarıyla bu, uygulamadan düzeltebileceğimiz bir şey değil.
Richard Le Mesurier

16
Yani yapabileceğimiz tek şey onu görmezden gelmek mi?
android geliştiricisi

2
Bildirim Yöneticisi androidx olarak tanımlandığında bu hata% 5'tir. Android% 1 olarak tanımlandığında. Bu hata kesinlikle benim için Notification Manager sınıfından kaynaklanıyor. Ama hala bulamadım.
Trk

1
@Trk Bildirim göstermeye çalışırken gerçekleştiğini buldum. Bu kazayı nasıl önleyebilirim? yakalamaya çalış?
EricZhao

27

Bunun nedenlerinden biri, Android sürüm 7 ve 8'in bildirim hizmetindeki bir hataydı.

Bildirimlerde "titreşim deseni" kullanılarak bir ArrayOutOfBoundsException. Bu, tüm sistemin çökmesine ve bir DeadSystemException.

Daha fazla ayrıntı için bu Medium makalesine buradan bakabilirsiniz .


Kilitleme bildirimi sizi onaylıyor
Trk

13
Ben satın almıyorum. App Center'da bu istisnayla ilgili birçok rapor görüyorum ve hepsi Android 7 veya 8'de değil, Android 10'da.
Justin

1
Justin ile aynı fikirdeyim, Android API 29 çalıştıran cihazlarda bu sorunların çoğunun ortaya çıktığını görüyorum ve bildirim kanallarında titreşim seçeneğini kullanmıyoruz.
Hrafn

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

Bu istisna, geliştirdiğim uygulamalardan birinde meydana geldi, çoğunlukla MI cihazlarında meydana geldi.

Hata ayıklamadan sonra, mevcut hizmette (A Deyin) bir arka plan iş parçacığından başka bir hizmeti (B Deyin) başlatmaya çalıştığımı, ancak startService(itService)yöntem çağrıldığında A hizmeti zaten öldürülmüştü.

Şimdiye kadar bulduğum tek çözüm, başka bir B hizmetini başlatmadan önce mevcut A hizmetinin çalışıp çalışmadığını kontrol etmektir. Uygulamanıza bağlı olarak, bu yanıttan bir hizmetin çalışıp çalışmadığını kontrol etmek için çeşitli yollardan birini kullanabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.