来看看当我们在各activity间往返的时候,操作系统层面到底发生了什么。首先,在桌面启动
器中点击GeoQuiz应用时,操作系统并没有启动应用,而只是启动了应用中的一个activity。确切
地说,它启动了应用的launcher activity。在GeoQuiz应用中,QuizActivity就是它的launcher
activity。
使用应用向导创建GeoQuiz应用以及QuizActivity时,QuizActivity默认被设置为launcher
activity。配置文件中,QuizActivity声明的intent-filter元素节点下,可看到QuizActivity
被指定为launcher activity,如下代码所示。
代码清单 QuizActivity被指定为launcher activity(AndroidManifest.xml)
QuizActivity实例出现在屏幕上后,用户可单击CHEAT!按钮。CheatActivity实例随之
在QuizActivity实例上被启动。此时,它们都处于activity栈中,如下图所示。
单击后退键,CheatActivity实例被弹出栈外,QuizActivity重新回到栈顶部,如上图
所示。
在CheatActivity中调用Activity.finish()方法同样可以将CheatActivity从栈里弹出。
如运行GeoQuiz应用,在QuizActivity界面单击后退键,QuizActivity将从栈里弹出,我
们将退回到GeoQuiz应用运行前的画面,如下图所示。
如从桌面启动器启动GeoQuiz应用,在QuizActivity界面单击后退键,将退回到桌面启动器
界面,如下图所示。
在桌面启动器界面,点击后退键,将返回到桌面启动器启动前的系统界面。
至此,可以看到,ActivityManager维护着一个非特定应用独享的回退栈。所有应用的activity
都共享该回退栈。这也是将ActivityManager设计成操作系统级的activity管理器来负责启动应用
activity的原因之一。不局限于单个应用,回退栈作为一个整体共享给操作系统及设备使用。
南昌易速网络专业从事南昌微信开发,南昌APP开发等服务,拥有十多年丰富经验,技术精湛,专业性强,服务周到,价格公正,欢迎广大新老客户朋友来电咨询,洽谈合作!
易速网站优化公司 » android项目中activity的使用与管理