2010-03-28 16 views
26

Aşağıdaki yöntem kodlarının tümünü nasıl sınayabilirim? Kodumun bir etkinliğin kaydetme/geri yükleme işlemi için işe yarayıp yaramadığını görmek için hepsinin olup bittiği senaryoları oynamak istiyorum. Öyleyse tüm yöntemleri test etmek için Emulator’de ne yapmalıyım? Başvurunuzu başlattığınızdaBir Faaliyetin Yaşam Döngüsünü kaydetmek/geri yüklemek için oluşturulmuş kod nasıl test edilir?

public class Activity extends ApplicationContext { 
    protected void onCreate(Bundle savedInstanceState); 

    protected void onStart(); 

    protected void onRestoreInstanceState(Bundle savedInstanceState); 

    protected void onSaveInstanceState(Bundle savedInstanceState); 

    protected void onRestart(); 

    protected void onResume(); 

    protected void onPause(); 

    protected void onStop(); 

    protected void onDestroy(); 
} 

cevap

6

onCreate, onStart ve onResume çalışacak, gerektiğinde daha fazla etkileşim var. , onStop ve onDestroy, çıkış yaptığınızda, örn. Geri düğmesine art arda basarak. onRestart, onSaveInstanceState ve onRestoreInstanceState test etmek

, başvurunuzu başlatılması sonra, daha sonra tekrar uygulamayı başlatmak, Etkinlik öldürülecek sağlamak için diğer bazı uygulamaların başlatılmasını, Home tuşuna basmayı deneyin.

Yöntemlerin çağrılıp çağrılmadığını kontrol etmek için günlüğe kaydetme özelliğini kullanın.

(Etkinlik yaşam döngüsü belgeleri: http://developer.android.com/guide/topics/fundamentals.html#actlife)

+0

Genel olarak Android sisteminin bu süreci sonlandırmasını beklerim, sistemi> uygulamalar> uygulamayı seçin> zorla durdur seçeneğini kullanın, ancak bu benim – Pyrodante

+6

@Pyrodante İşlemi sonlandırırsanız durum geri yüklemesini test edemezsiniz.Prosesin öldürülmesi, durumların kaybolduğu anlamına gelen uygulama hafızasını temizler. Uygulamayı açtığınızda, ilk ekranınızı gittiğiniz yer yerine görmelisiniz. – Pijusn

+8

"Bir dizi başka şey başlatın ve geri dönün" bir test stratejisi değildir. –

7

Eğer SetAlwaysFinish aracını (aşağıdaki bağlantıya bakınız) ya da uygulama emülatörü ile birlikte DevTools'un birini kullanabilirsiniz onRestoreInstanceState onSaveInstanceState test etmek ve belirleyin.

http://bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/

bu uygulamalar her ikisi

Android OS davranışını değiştirmek için ActivityManagerNative sınıfının bir parçası olan AlwaysFinish adlı gizli ayarını kullanın. Yeni davranış altında, işletim sistemi ekrandan çıktığı anda onSaveInstanceState olayını tetikleyerek herhangi bir etkinliği kaldıracaktır. İşletim sistemi etkinliği geri getirmek istediğinde, onRestoreInstanceState olayını çağırır.

Yukarıdaki bağlantı, uygulamanızın onSaveInstanceState ve onRestoreInstanceState olaylarını test etmek için SetAlwaysFinish uygulamasının nasıl kullanılacağını açıklar. DevTools'u kullanmak istiyorsanız, Geliştirme Ayarları'nı etkinleştirin> Etkinlikleri anında yok edin. cihazınızda Geliştirici Seçenekleri etkinleştirdiyseniz

+0

Bu harika. Bunu hiç bilmiyordum ve bu mükemmel çalıştı! – Kirk

+0

Büyük bilgi, burada diğerleri için bazı ekmek kırıntıları http://developer.android.com/tools/debugging/debugging-devtools.html –

116

, test onRestoreInstanceState() yardımcı olacak etkinlikler bulundurmayın bir seçenek yoktur.

+6

Bu kabul edilen cevap olmalıdır, çünkü bu, öngörülebilir sonuçlar doğurur. rastgele rastgele uygulama sayısı) ve root erişimi olan bir üçüncü taraf-uygulama yüklemeniz gerekmez. –

+0

@ max.mustermann Sadece öngörülebilir sonuçlar sağlamakla kalmaz, aynı zamanda devlet tasarrufu ve restorasyonunu test etmek için tasarlanan yöntemdir. – Pijusn

+0

Cihazımda böyle bir onay kutusu yoktu; bunun yerine "Arka plan işlemleri sınırı" vardı. Fakat bazı sebeplerden ötürü “Arka plan işlemleri yok” ve “En çok 1 süreç” seçeneği işe yaramadı; uygulamalar kaydedilmiş hiçbir instanceState ile yok edildi. Nasıl, "En fazla 2 işlemde" iyi çalıştı - uygulamanızı zorlamak için sistemi zorlamak için yalnızca en az üç uygulama arasında geçiş yapmanız gerekir. Belki birinin zamanını kurtaracak. –

9

Uzun süren bir eylemsizlik süresinin çökmesinden sonra bir uygulamanın yeniden başlatıldığı bir sorunla karşılaştık. "Faaliyetleri saklamıyor" sorunun yeniden üretilmediğini, ancak Dev Settings'de Background process settings :: No background processes'un (hata ayıklama sırasında bile) olduğunu gördük.

+1

Müthiş. Arka plan işlemlerini kontrol ettim ve işe yarıyor. 5.1.1'deyim. Teşekkürler – thuongle

1

Bu olayları test etmenin başka bir yolu var. Öncelikle, test etmek istediğiniz belirli Aktiviteye gitmeniz, ardından ana ekran düğmesine basmanız ve Android cihaz ekranına gidersiniz.

Bu aracında

Android device monitor example

Android device monitor location

sen Uygulama bir iplik seçmek ve durdurma düğmesi ile öldürebiliriz. Son olarak, uygulamayı geçmişten açmalısınız ve iş parçacığı yeniden oluşturulacaktır.

İlgili konular