检查每个活动的登录情况

Rod*_*tro 11 authentication android login titlebar android-activity

我正在开发和应用程序,用户必须先登录才能使用它.我自定义了标题栏并在其中放置了一个注销按钮,以便用户可以随时注销,并使用其他帐户登录.然后应用程序应再次显示登录活动.

这很好,但我的问题是后退按钮.当用户注销时,登录活动显示,但如果他按下,则应用程序返回上一页,使用户能够再次使用该活动,即使没有登录也是如此.

我通过onCreate()这种方式设置了所有活动:

public void onCreate(Bundle savedInstanceState) {  
    // Activity code  
    checkLogin();  
}
Run Code Online (Sandbox Code Playgroud)

而且checkLogin():

if (GlobalContext.getCurrentUser() == null) {
    Intent i = new Intent(this, LoginActivity.class);
    startActivityForResult(i, GlobalContext.REQUEST_LOGIN);
}
Run Code Online (Sandbox Code Playgroud)

然而,这不应该像它应该的那样工作,我的应用程序有时会在我按下时崩溃,有时它会像我说的那样返回到之前的活动,有时它确实有效.

checkLogin()每次活动(重新)开始时,如何进行调用?
或者还有另一种更好的方法来做我想要的事情?

编辑:

基于@Gabriel的答案和SDK参考中的以下图表,我移动checkLogin()onResume()方法而不是onCreate解决我的问题.

活动生命周期

Gab*_*gut 5

移动电话,以checkLogin()onCreate()onStart().


Ars*_*war 5

我的建议是将您添加checkLogin()到活动中onResume(),因为在onCreate()方法中检查它将导致仅在创建活动时调用登录1次.

甚至连击球都是将它移动到

onAttachToWindow()
Run Code Online (Sandbox Code Playgroud)

所以每次你的活动都会出现在前面.onAttachToWindow()将被调用并将检查登录.