Umarım birisi çözüm olmasa bile, en azından bir davranış için bir açıklama bulmamda bana yardımcı olabilir.
Sorun:
Bazı cihazlarda, başlatıcı simgesine basmak geçerli görevin sürdürülmesine neden olurken, diğerlerinde ilk başlatma amacının tetiklenmesine (uygulamayı etkili bir şekilde yeniden başlatmak) neden olur. Bu neden oluyor?
Detay:
"Launcher Icon" a bastığınızda uygulama normal başlar - Yani, sanırım Activity
, eylem android.intent.action.MAIN
ve kategori ile ilk adınızla bir Niyet başlatılır android.intent.category.LAUNCHER
. Ancak bu her zaman böyle olamaz:
Cihazların çoğunda, uygulama zaten çalıştıktan sonra başlatıcı simgesine basarsanız, o süreçte o anda çalışan Etkinlik devam eder ( ilk DEĞİLActivity
). İşletim sistemi menüsündeki "Son Görevler" den seçmiş olduğunuz şekilde devam eder. Tüm cihazlarda istediğim davranış budur .
Ancak, seçilen diğer cihazlarda farklı davranışlar oluşur:
Motorola Xoom'da, başlatıcı simgesine bastığınızda, Uygulama şu anda çalışanlardan bağımsız olarak her zaman ilk başlatmayı başlatacaktır
Activity
. Başlatıcı simgelerinin her zaman "LAUNCHER" amacını başlattığını varsayıyorum.Samsung Tab 2'de, başlatıcı simgesine bastığınızda, uygulamayı yeni yüklediyseniz, her zaman ilkini başlatır
Activity
(Xoom ile aynı) - ancak, yüklemeden sonra cihazı yeniden başlattıktan sonra başlatıcı simgesi uygulamayı devam ettirin. Bu cihazların, cihaz başlangıcında başlatıcı simgelerinin çalışan görevleri doğru bir şekilde sürdürmesini sağlayan bir arama tablosuna "yüklü uygulamalar" eklediğini varsayıyorum?
Bunu birçok cevabı okudum ses sorunuma benzer ancak basitçe ekleyerek android:alwaysRetainTaskState="true"
veya kullanma launchMode="singleTop"
için Activity
cevap değildir.
Düzenle:
Bu uygulamanın en son başlatılmasından sonra, bu davranışın ilk yeniden başlatmadan sonra tüm cihazlarda ortaya çıkmaya başladığını görüyoruz . Bu bana çılgınca geliyor ama yeniden başlatma sürecine baktığımda, neyin yanlış gittiğini bulamıyorum.
finish()
, onları Activity
tekrar başlatmak yerine, yeniden ilk başladığı durumlarda çağırıyor gibi görünüyor .