Şekil 1 - Bu Cevabın araştırılması sırasında birçok Zombi öldürüldü
Bir Android uygulaması Java VM işleminin işletim sistemi düzeyinde sonlandırılması önerilmez. Ne yazık ki, System.exit () ve kabuk "kill" komutunun yaptığı gibi, tutulma aygıtı penceresinin "durdur" yaptığı da tam olarak budur.
Bu, onStop (), onDestroy () ve finalize () gibi normal uygulama yaşam döngüsü yöntemlerini altüst eder.
Pek çok uygulama, zarif çıkış için bu yöntemleri gerektirir (örneğin, Sensör, MediaPlayer, Ekolayzer, Görselleştirici, vb. Gibi sistem nesneleri kullanıyorsa).
Bu yaşam döngüsü yöntemleri sırasında release () açıkça çağrılmazsa, bu sistem nesneleri sistem kaynaklarında zombi ölüm tutuşlarıyla takılır. Bkz. Şek. 1 yukarıda. Bu, bir uygulamanın yeniden başlatılmasını engelleyebilir ve hatta yeniden başlatma gerektirebilir. Bu nezaketsiz yönüdür.
Tek çözüm, onStop () veya onDestroy () veya en azından finalize () çağrısıyla uygulamanızdan her zaman temiz bir şekilde çıktığınızdan emin olmaktır. Hata ayıklayıcı, işletim sistemi kapatıldığında olduğu gibi bunu yapar.
Komut satırından zarif bir şekilde çıkmaya zorlamak için uygulamanızı SIG_HUP olaylarını yakalayacak şekilde ayarlayabilirsiniz.
Uygulama sanal makinesini öldüreceğiniz tek zaman ANR (zaten zombi) durumundadır. ANR'ler düzeltilmelidir. Bu duruma girebilecek bir uygulamayı asla dağıtmayın. Bu son derece kaba.
Dağıtım sırasında bunları izlemek için Google analizini ve Play Store'u kullanabilirsiniz. Zombi uygulamanız nedeniyle yeniden başlatmak zorunda kaldıktan sonra öfkeli kullanıcıların tek yıldızlı ANR incelemeleri vermesini istemezsiniz. Çok kötü.
Android'in Linux olduğunu unutmayın: ona gerçek bir işletim sistemi gibi davranın ve uygulamanın yaşam döngüsüne saygı gösterin, aksi takdirde kesinlikle korkunç Zombie Apocalypse ile karşılaşacaksınız.
Not: Zombi benzetmesini beğenmediyseniz, Fantasia'ya ne dersiniz?