2010-01-25 11 views
15

2 etkinliğim LogonAct ve MainAct ile bir uygulamam var. LogonAct, kullanıcının uygulamaya döndüklerinde her seferinde gitmesini zorlamak istediğim bir oturum açma etkinliğidir. LogonAct üzerinde android: clearTaskOnLaunch = "true"'u ayarlıyorum. Sonra bu sırayı takip edinKullanıcı uygulamadan çıktığında kök etkinliğini geri alma nasıl temizlenir?

Home -> LogonAct -> MainAct -> Home

Ben ilk ben ekranlarının bu dizinin geçmesi uygulamayı başlatmak,

LogonAct -> Back -> MainAct

Neden MainAct beni geri getiriyor ? clearTaskOnLaunch = "true": LogonAct android sahip olduğundan bu etkinlik sığınak kapalı olmamalı. LogonAct'tan Geri düğmesine bastığımda Eve geri getirilmesi bekleniyordu. Ben 1.5 kullanıyorum

<activity android:name=".LogonAct" 
      android:clearTaskOnLaunch="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

    <activity android:name=".MainAct"> 
     <meta-data android:name="android.app.default_searchable" 
        android:value=".SearchResults" /> 
    </activity> 

AndroidManifest.xml dan

İlgili snippetleri.

Herhangi bir yardım için teşekkür ederiz. android:clearTaskOnLaunch için

+0

sorunuzu düzenleyebilir ve Manifest'inizi ya da en azından 'LogonAct' öğesinin elemanını ekleyin, böylece bir hata varsa, insanların yerinde olmasına yardımcı olur. –

+0

AndroidManifest.xml'den Snippet'ler Dave. Onlara soruyu dahil etmeliydim ama önümde kod yoktu. – Adrian

cevap

11

belgeler bu özellik "ne zaman [Etkinlik] ana ekrandan yeniden başlatılır" geçerli olduğunu söz.

Ancak, sizin durumunuzda Ana ekrana dönmek için Ev düğmesine basarak yerine Geri düğmesine basarak ediyoruz. Bu uygulama MainAct "bitmiş" değildi çünkü yeniden hizmete aslında olmadığı anlamına gelir. Bu, yalnızca Geri'a (veya Android, kaynakları kaydetmek için görevi öldürürse) bastığınızda olur. yalnızca uygulamada iki aktiviteyi sahip olduğundan

, böylece kullanıcıların buna asla geri dönemez ve LogonAct geçmesi gerektiğini sağlanması MainAct üzerinde android:noHistory niteliğini ayarlayabilirsiniz.

bir kenara, o (onlar bir telefon aldığınızda örneğin) onlar app ayrılırsanız her zaman yeniden giriş etmeye zorlama biraz can sıkıcı görünüyor.
Uygulamanızın kalıcı depolama zaman aşımı ile bir oturum jetonu korumak veya bu uygulama — nasıl çalıştığını ama eğer bir ağ bağlantısı hizmeti kullanarak açmak tutunabileceği size ve ihtiyaçlarına kalmış tabii. :)

+1

Yardımlarınız için teşekkürler Christopher. MainAct'tan sonra gelebilecek birkaç aktivitem var. Bu yüzden eğer android kullanırsam: MainAct'ta noHistory yok. Geriye'yi seçtiğinizde bu diğer etkinlikler oturum açma ekranına geri döner. Uygulamaya her geldiğinizde oturum açmanın ideal olmadığını kesinlikle kabul ediyorum. Bu bir şifre yöneticisi uygulaması, bu yüzden çok uzun süre erişilebilir bırakmak istemedim. Denemek ve yapmaya çalışacağım, sudo ile benzer şekilde çalışan bir zamanlayıcıya sahip olmak, yani en son girilmesinden bu yana x saniyeden daha uzun bir süre geçtiyse parolayı istemek. – Adrian

+3

Ah. Bu durumda, belirli bir zaman periyodunun geçip geçmediğini kontrol ettiğiniz her bir "Aktivite" nin 'onResume()' ında hızlı bir yöntem çağrısı ekleyebilirsiniz. Eğer öyleyse, o zaman 'bitir()' işlevini çağırın ve 'LogonAct' öğesine geri göndermek için bir '' Niyet '' iĢaretleyin. –

15

Sen aşağıdakileri yapabilirsiniz: Ana faaliyeti
2 beyanında,
1. seti clearTaskOnLaunch = "true" AndroidManifest içinde.aktivitedeki bu kapanmalıdır: - kullanıcı yeniden uygulanması halinde düzenlemesi halinde bu ana ekrandan geri dönüyor -

@Override 
public void onBackPressed(){ 
    moveTaskToBack(true); 
} 

eğer öyleyse kullanıcı geri basar görev yığını temizler ve o ana faaliyetleri kimse kökünü gelir

+0

Teşekkürler muzhig Açıklamaınız bana çok yardımcı oluyor. – amity

+0

teşekkürler muzhig..it bana yardımcı oldu ... –

İlgili konular