我正在使用令牌向网络服务器发出请求。我还有一个带有身份验证表单的活动。当用户启动我的应用程序时,我想检查她是否有令牌并且:
要存储和请求令牌,我使用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
检查会带来疑问。请指教。
答案 0 :(得分:1)
我不推荐onCreate
方法,因为当应用程序处于后台状态且onCreate
方法赢了来到前台再次被召唤。
相反,请使用在所有方案中调用的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();
}
}
}
}