0

我正在尝试开发一个支持从 2.3 及更高版本到最新版本的 android 应用程序。它是基于会话的。场景:我的应用程序作为登录活动,成功登录后它会启动 A 活动,并且可以启动更多活动,例如 A 活动->B 活动->C 活动。我的问题是:当我在 C 活动中并且如果会话过期(会话过期来自服务器端),我需要关闭任务中的所有活动并开始一个新的登录活动。

我尝试使用 FLAG_ACTIVITY_CLEAR_TASK (但此标志从 3.0 开始支持)。请帮助我解决问题。

4

2 回答 2

0

您可以创建一个 BroadcastReceiver 监听“过期”动作,在您的活动中创建从 BroadcastReceiver 扩展的类,注册广播以监听“过期”动作和 onReceive 方法完成活动,这样就可以了......请记住正确管理广播的注册/注销操作,这样您就不会通过注销已经销毁的活动来泄漏已注册的广播......

希望能帮助到你。

问候!

于 2013-07-26T17:43:44.503 回答
0

我正在做类似的事情,我所做的是在登录后开始每个活动以获得结果。到期时,只需将活动结果设置为您决定的任何内容并使用 finish(); 它看起来像这样:

登录:

getInfo(){
    yourCode;
    if(correct)
        startActivityForResult(yourIntent);
}

onActivityResult(int requestCode, int resultCode, Intent data){
    if(resultCode == 0)
        yourCode;
}

活动一:

expiration(){
    setResult(0);
    finish();
}

只需设置每个活动的到期方法以完成活动并设置结果代码,以便在它之前的活动知道它应该完成。

于 2013-07-26T17:51:22.863 回答