我应该在应用程序的onCreate方法中实现身份验证令牌的检查

时间:2015-05-28 14:16:18

标签: android

我正在使用令牌向网络服务器发出请求。我还有一个带有身份验证表单的活动。当用户启动我的应用程序时,我想检查她是否有令牌并且:

  • 如果有一个显示标准第一屏幕
  • 如果没有显示登录活动

要存储和请求令牌,我使用SharedPreferences。目前,我已将onCreate MyApplication方法中的逻辑置于应用程序启动时进行检查:

public class MyApplication extends Application {
    String authToken = null;

    @Override
    public void onCreate() {
        super.onCreate();
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        authToken = preferences.getString("token", null);
        if (authToken == null) {
            // requires authorization
            // show login acitivity
        }

但是,如果根据onCreate正常的主要屏幕活动应该启动,我不确定如何从AndroidManifest方法启动登录活动。因此,现在进行Application检查会带来疑问。请指教。

1 个答案:

答案 0 :(得分:1)

我不推荐onCreate方法,因为当应用程序处于后台状态且onCreate方法赢了来到前台再次被召唤。

enter image description here

相反,请使用在所有方案中调用的onResume方法。以下代码显示了您的其他活动要扩展的基本活动。如果您在某些活动中不需要身份验证,则只需覆盖requireLogin()方法即可返回false

public class BaseActivity extends ActionBarActivity implements OnAccountsUpdateListener {

    public boolean requireLogin(){
        return true;
    }

    @Override
    protected void onResume() {
        super.onResume();

        if(requireLogin()){
           // check authentication

           if(notAuthenticated){
              startActivity(loginActivityIntent);
              finish();
           }
        }
    }
}