展会信息港展会大全

android开发完全退出activity
来源:互联网   发布日期:2016-01-14 10:24:59   浏览:1246次  

导读:我们退出Activity可以调用:finish(),system(0),但是这些都只是单单退出单个Activity也有人会说,直接把进程杀死,这些做法都不是很可取,其实我们翻看api可以发现...

我们退出Activity可以调用:finish(),system(0),但是这些都只是单单退出单个Activity

也有人会说,直接把进程杀死,这些做法都不是很可取,其实我们翻看api可以发现,Activity

都是放入stack中管理,我们只要把stack清空了,不就完全退出了嘛。要对Activity的stack

管理,就需要了解launchMode的四种状态,这里就不多说了,自己看看api。

我们就利用android:launchMode="singleTop",当该Activity在栈顶时,会清空它下面的Activity

然后把当前Activity finish掉,就完全关闭了。

实例 A,B,C,D四个Activity;A作为入口,在manifest.xml设置android:launchMode="singleTop"

其他几个不需要设置。启动顺序 A->B->C->D

这里我们在D窗口打开A窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,

再次开启A时将会清除该进程空间的所有Activity。

在D中使用下面的代码:

Intent intent = new Intent();

intent.setClass(D.this, A.class);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置

startActivity(intent)

finish();

A中代码:protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

//退出

if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {

finish();

}

}

因为A是android:launchMode="singleTop"不会调用oncreate(),而是响应onNewIntent()

这时候判断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。

B,C也被清掉了,因为A中是android:launchMode="singleTop",栈下面的都被清理。

栈中A,B,C,D全部被清理。所以整个程序退出了。

赞助本站

人工智能实验室

相关热词: android开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港