在我的应用程序中,我使用了 iosched 2012 应用程序中的一些代码。具体来说,启动工作流程如下:
1.用户按下应用程序的启动器图标
2.HomeActivity 检查用户是否通过身份验证。如果他/她不是,它将启动身份验证活动,将其意图传递给它并自行完成
3.登录过程成功后,authenction Activity 启动一个Activity 以启动HomeActivity 并自行结束
4.HomeActivity 再次检查用户是否通过身份验证并显示应用程序的主屏幕。
下面的代码在 API Level > 11 中就像一个魅力。今天,我在 Gingerbread 中尝试了该应用程序,但它失败了。第 3 步有效,但尽管 HomeActivity 启动它并没有被带到前面。您必须使用最近列表并选择应用程序才能查看 homeactivity 及其现在显示的内容。
这是代码并从 oncCreate 方法中的 HomeActivity 检查
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!AccountUtils.isSystemAuthenticated(this)) {
AccountUtils.startSystemAuthentication(this, getIntent());
finish();
} else if(!AccountUtils.isAppAuthenticated(this)) {
AccountUtils.startAppAuthentication(this, getIntent());
finish();
}
if(isFinishing()) {
return;
}
setContentView(R.layout.activity_main);
...
}
}
登录过程完成后在 Authentication 活动中调用的方法
protected void handleLoginSuccess(LoginServiceResponse response, String username, String password) {
if(....) {
if(mFinishIntent != null) {
mFinishIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mFinishIntent.setAction(Intent.ACTION_MAIN);
mFinishIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mFinishIntent);
}
finish();
} else {
super.handleLoginSuccess(response, username, password);
}
}
其中 mFinishIntent 成员变量是从 HomeActivity 传递的意图(使用 getIntent())
正如我所提到的,在 API Level > 11 中,这运行良好,并且 HomeActivity 的 onCreted 方法中的断点被命中两次,而在 Gingerbread 手机中,仅被命中一次(仅在应用程序启动时)。
我是否必须使用另一个标志或者您对发生的事情有任何其他想法?
谢谢