2013-03-13 31 views
0

我正在構建Android應用程序,特別是登錄頁面,我希望應用程序完全關閉應用程序用戶將以任何方式退出登錄頁面,即使用SWITCH,HOME或BACK按鈕。當任何形式的退出完成時,即使用HOME,SWITCH和BACK按鈕完成關閉Android應用程序

應用程序不應該完全關閉的唯一時間應該是用戶成功登錄時,即按下自定義創建的登錄按鈕或輸入按鈕時。

我已經能夠成功地關閉應用程序,但即使在用戶成功登錄時也會關閉。這並不意味着要做到這一點。

下面是我的完整停機碼 - 我接手的onDestroy(),onBackPressed(),完成()和的onStop()方法:

// Deal with back button 
public void onBackPressed() { 
    System.runFinalizersOnExit(true); 

    System.exit(0);  
} 

// Deal with exiting of app 
public void finish() { 

    System.runFinalizersOnExit(true); 

    System.exit(0); 

} 

// Deal with exiting of app 
public void onDestroy() { 
    System.runFinalizersOnExit(true); 

    System.exit(0); 
} 

// Deal with exiting of app 
public void onStop() { 
    System.runFinalizersOnExit(true); 

    System.exit(0); 
} 

沒有任何人有任何想法,關於我的問題

你的幫助是極大的讚賞

+0

你不必'@ Override'任何這些或'super.onStop()'或任何其他'super.method()'。這可能會導致問題嗎? – TronicZomB 2013-03-13 15:32:54

+1

@TronicZomB「@ Override」註解只是一種方便,它可以幫助如果重寫方法被重命名或刪除,因爲它會導致編譯器警告/錯誤。這並不是強制性的 – nicopico 2013-03-13 15:39:33

+0

@nicopico謝謝。我仍然在學習,所以很高興知道。 – TronicZomB 2013-03-13 15:40:51

回答

0

只需創建一個類成員布爾值mLoggedIn並將其設置爲true當自定義創建的登錄按鈕或輸入按鈕被按下時。
然後

@Override 
protected void onPause() 
{ 
    super.onPause(); 
    if (!mLoggedIn) 
    { 
     finish(); 
    } 
} 
2

hereonStop()方法的說明。我想你會在用戶成功登錄後再打開另一個Activity,上面的Activity變得不可見,並且在你退出你的應用程序時呼叫onStop()。所以,請不要覆蓋onStop()

+0

嗨,謝謝。事實上,當用戶登錄時,我會調用另一個活動,即主頁。我已經停止覆蓋onStop(),但是我的問題仍然存在,即假設用戶使用主頁按鈕或切換按鈕退出應用程序,則應用程序不會完全關閉下來,我需要它來做到這一點。 – TokTok123 2013-03-13 15:56:02

1

每當您的活動變爲不可見時,系統會調用onStop()方法:當您的應用進入後臺,屏幕關閉時,或當您切換到其他活動時。

無論如何,你想要做的是強烈不鼓勵。 (Dianne Hackborn是Android Framework的主要開發人員之一)。

強制關閉您的應用使用System.exit(),Process.killProcess()等與Android應用生命週期存在衝突的強烈風險,並且可能破壞其保存的狀態,導致您的用戶出現意想不到的不愉快行爲。

更好的方法是在啓動登錄活動時使用標誌FLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_CLEAR_TOP。 這應該從應用程序中刪除先前的活動,這與從用戶角度開始新應用程序相同。

+0

@nicopio:嗨,謝謝。我已經閱讀論壇,我明白呼籲onStop()不鼓勵,如果我可以完全關閉應用程序的任何想法,如果用戶要退出使用家庭和切換按鈕或退出應用程序通過選擇一個電話說?謝謝 – TokTok123 2013-03-13 16:10:00

+1

@amonari我對我的帖子進行了編輯,可以幫助您以合適的方式獲得您想要的內容。你可以**重寫**'onStop()',這是對'System.exit()'的調用,這是不鼓勵的。 – nicopico 2013-03-13 16:20:39

相關問題