2013-07-10 62 views
2

我正在開發一個Android應用程序,該應用程序將向大學健身教授展示他們的學生在課堂上的表現。由於這些數據相當敏感(包括體重在內的生物測量學數據,許多大學生都是自我意識的),我不希望任何人拿起數據。雖然我創建了正確的登錄屏幕,但完成了對數據庫的身份驗證等操作。按主頁按鈕時遇到問題。由於Android不會在離開應用程序時立即關閉程序,因此可能會重新打開並返回到原來的位置。我想強制應用程序每次都返回到登錄屏幕(我已經更改了onBackPressed,因此您不能僅僅從登錄屏幕返回到以前的視圖),以便您必須重新輸入憑據才能取回進入應用程序。但是,我似乎無法做到這一點。我發現一個答案在這裏說,使用以下行:每次都在同一活動上啓動Android應用程序

android:clearTaskOnLaunch="true" 

但是,不管我把什麼XML文件它,是它的清單或個別活動個XML,它似乎什麼也不做。那麼,如何確保每次啓動應用程序時登錄屏幕都會出現,無論它是從頭開始還是從頭開始?

+0

發表您的清單。 –

回答

0

當onPause()在活動中啓動時,您可以設置一個標誌。然後,當您返回時,您可以從onResume()內檢查標誌,然後從該點請求登錄。這將一定要求每次;當然在一個簡單的情況下。

編輯:

隨着多個活動,你可以檢查對保存的情況下,看看他們是相同的,當你開始一個新的活動。如果上下文不同,那麼您可以放棄上下文之前的活動上下文並開始新的活動。

如果它們是相同的,那麼你已經回到自己的活動中(你已經降低並將屏幕拉回)。如果在一個簡單應用程序的情況之外,您將不得不使用某種形式的保存狀態,以這種方式進行多項活動。

+0

如何區分當不同的活動被調用時和用戶何時離開應用程序? – HopeProgrammer1994

+0

不知道你是否有一個簡單的應用程序登錄屏幕,然後只有一個活動照顧。或者如果你真的只有一個活動屏幕,你想確保他們一旦離開它們就不能訪問。所以這可能不適合你。 –

3

試着玩onUserLeaveHint()方法。如果你讀它的文檔,它說:

Its Called as part of the activity lifecycle when an activity is about to go into the background as the result of user choice. For example, when the user presses the Home key, onUserLeaveHint() will be called, but when an incoming phone call causes the in-call Activity to be automatically brought to the foreground, onUserLeaveHint() will not be called

所以,無論你在家檢測按下按鈕時,你可以完成運行的活動/活動。所以下次用戶點擊應用程序時,它將從第一個登錄屏幕開始。

希望這會有所幫助。

+0

這是有效的。非常感謝你! – HopeProgrammer1994

+0

好的,我遇到了一個問題。當我嘗試通過ANY方法離開視圖時,它會返回到登錄屏幕。有沒有辦法區分何時按下主頁按鈕與其他任何東西? – HopeProgrammer1994

+0

@ HopeProgrammer1994不知道,我總是發現onUserLeaveHint()太頻繁地觸發它,它可能會或可能不會是你想要的。 –

3

您應該重寫onUserLeaveHint()

@Override 
protected void onUserLeaveHint() { 
    // do your logic 
    //finish() or start login activity 
} 
+0

這有效。非常感謝你!自第一次以來,我接受了另一個,但我很欣賞這個補充說明! – HopeProgrammer1994

相關問題