我正在尝试开发一个支持从 2.3 及更高版本到最新版本的 android 应用程序。它是基于会话的。场景:我的应用程序作为登录活动,成功登录后它会启动 A 活动,并且可以启动更多活动,例如 A 活动->B 活动->C 活动。我的问题是:当我在 C 活动中并且如果会话过期(会话过期来自服务器端),我需要关闭任务中的所有活动并开始一个新的登录活动。
我尝试使用 FLAG_ACTIVITY_CLEAR_TASK (但此标志从 3.0 开始支持)。请帮助我解决问题。
我正在尝试开发一个支持从 2.3 及更高版本到最新版本的 android 应用程序。它是基于会话的。场景:我的应用程序作为登录活动,成功登录后它会启动 A 活动,并且可以启动更多活动,例如 A 活动->B 活动->C 活动。我的问题是:当我在 C 活动中并且如果会话过期(会话过期来自服务器端),我需要关闭任务中的所有活动并开始一个新的登录活动。
我尝试使用 FLAG_ACTIVITY_CLEAR_TASK (但此标志从 3.0 开始支持)。请帮助我解决问题。
您可以创建一个 BroadcastReceiver 监听“过期”动作,在您的活动中创建从 BroadcastReceiver 扩展的类,注册广播以监听“过期”动作和 onReceive 方法完成活动,这样就可以了......请记住正确管理广播的注册/注销操作,这样您就不会通过注销已经销毁的活动来泄漏已注册的广播......
希望能帮助到你。
问候!
我正在做类似的事情,我所做的是在登录后开始每个活动以获得结果。到期时,只需将活动结果设置为您决定的任何内容并使用 finish(); 它看起来像这样:
登录:
getInfo(){
yourCode;
if(correct)
startActivityForResult(yourIntent);
}
onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode == 0)
yourCode;
}
活动一:
expiration(){
setResult(0);
finish();
}
只需设置每个活动的到期方法以完成活动并设置结果代码,以便在它之前的活动知道它应该完成。