您的位置:首页 > 职场人生

Android面试准备 第三天 第六例 Android应用启动原理

2016-04-04 09:16 239 查看
参考:/content/484706.html

8、 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?

个人理解:首先关于从图标的进入的操作,是个理所当然的行为,但是对于菜鸟的我,对于后台运行的机制,可以明确的就是图标点击后,Android系统层面会去读取该App中AndroidManifest文件,这个文件又叫注册清单,是App所使用到的四大组件一个声明文件,在该文件中为所有使用到的组件声明相关信息,可以起到导航的作用,可以提高程序运行的效率,类似饭馆中提供的菜单;在这个文件中必须提供一个主活动组件,即活动中意图过滤器(intent-filter)的action为Main,可以简单的看做是把这个活动标识为主活动,这样话就类似了我们Java运行机制,会去查找Main函数,然后根据主活动类的定义代码,在内存中创建该对象,回调一系列方法,最后通过不同组件功能的集合形成一个可用的软体。而从外部程序跳转到另一个程序也是Android明确提供该手段的,这个功能实现的前提,我觉的基于Android系统上所有的App的注册清单相互访问权限是完全共享的,而Android提供了隐式Intent可以通过设置它action值,这样根据action值去所有App的注册清单中去匹配对应的活动,后面启动方式和图标进入应该是差不多的。所谓我觉的没有什么差别,仅是入口不一样,这道题就考核对于

APP启动原理的了解。

标准答案:

是因为启动程序(主界面也是一个app),发现了在这个程序中存在一个设置为<category android:name="android.intent.category.LAUNCHER" />的activity,所以这个launcher会把icon提出来,放在主界面上。当用户点击icon的时候,发出一个Intent:Intent
intent = mActivity.getPackageManager().getLaunchIntentForPackage(packageName);mActivity.startActivity(intent); 跳过去可以跳到任意允许的页面,如一个程序可以下载,那么真正下载的页面可能不是首页(也有可能是首页),这时还是构造一个Intent,startActivity.这个intent中的action可能有多种view,download都有可能。系统会根据第三方程序向系统注册的功能,为你的Intent选择可以打开的程序或者页面。所以唯一的一点不同的是从icon的点击启动的intent的action是相对单一的,从程序中跳转或者启动可能样式更多一些。本质是相同的。

二次理解:标准答案的内容太多杂乱,无法提炼。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: