普通开发的Android面试知识体系归纳梳理1

回过头来从最基础的开始,先写知识点,后填入具体内容。由于写博文主旨为当前面试服务,所以会先把架子搭起来再慢慢编辑填充,当前编辑次数:1。

Acitvity:

Android系统使用activity stack对activity做管理,通常一个应用的activity都在一个stack里面。

模式:所谓模式,就是启动一个activity的时候,对这个stack要做什么处理。

         standhard模式。不检查stack,直接创建一个新的activity放入栈顶。

         singleTop模式。先检查栈顶的activity是不是要启动的activity,如果是则什么都不做;否则会创建一个新的activity放入栈顶。

         singleTask模式。先检查本应用的整个stack内有没有这个activity,如果有则从栈内调到栈顶来,如果没有就创建一个新的activity放入栈顶。

         singleInstance模式。启动一个新的stack来管理这个activity。主要用于与其他应用共享这个活动实例,比如来电显示界面。

 

生命周期:onCreate->onStart->onResume ->onPause->onStop->onDestory 此外onStop之后重新调用Activity会调用onRestart方法。

拓展:当点击一个没有运行的app的桌面图标的时候

Launcher应用响应onClick()调用startActivitySafely ()开始activity的创建,然后到launcher的父类Activity中执行startActivity(),里面的动作实际是由Instrumentation的execStartActivity()来完成的。这个Instrumentation通过Binder获取了AMS的引用,将工作移入AMSAMS会先暂停,让PMS分析intent并从注册表文件中获取对应activity的信息,然后根据activity的模式对activity stack进行处理。一系列处理完毕后通过binder切回主线程ActivityThread的内部类ApplicationThread中了,在里面执行scheduleLaunchActivity()发送消息给H这个handler去处理,进一步的调用了ActivityThreadperformLaunchActivity完成最终创建:包括从ActivityClientRecord中获取activity组件信息;通过Instrumentation用类加载器创建activity对象;通过LoadedApk尝试创建Application对象;创建ContextImpl对象并通过Activityattach()完成一些重要数据的初始化;最后onCreate()。

----------------------------------------------------------------------------------------

这个流程各种网站各种书里都有详细的描述,我觉得简单一点回答就回答红字就行,想把关键点说明就上文就行,当然还有更深入更细致的细节,比如,但是作为应用层的开发人员而言我觉得上文就足够了。

----------------------------------------------------------------------------------------

对于application的角色我们还能再继续扩展:AMS获取activity信息时发现这个应用没有启动,会通知Zygote进程孵化出应用进程,然后在这个dalvik应用进程里执行ActivityThread的main方法。应用进程接下来通知AMS应用进程已启动,AMS保存应用进程的一个代理对象(applicationthread),这也是后面AMS做完工作后为什么能切回主线程ActivityThread的内部类ApplicationThread中的原因。

上面Zygote是一个很重要的东西,深挖可以挖到android开机后的一些操作,同样ActivityThread的main方法也很有意思,以后详细介绍。

 

 

状态:

         运行状态,栈顶的activity就是运行状态,能与用户直接交互。

         暂停状态,执行onPause之后的activity处于暂停状态,可见但不处于栈顶,即用户无法直接与这个activity交互。比如启动了一个非全屏系统弹框后的activity。.

         停止状态,执行onStop之后,活动完全不可见。系统会为此状态活动保留相应状态和成员变量,但是其他地方需要内存时可能被回收。反过来说onStart可以对活动状态和UI状态做初始化或者复原。万一这种状态的活动被系统回收了,再启用的之后会重新调用oncreate方法,可以在onSaveInstanceState()方法中使用Bundle类型参数对临时变量做保存。

         销毁状态,onDestory之后就被销毁了,活动被从栈中移除,系统最可能回收。

启动过程:

 

其他接口:

onNewIntent()接口,为intent跳转至复用的activity时执行的方法,需要使用setIntent()来更新intent防止获取的数据是第一次intent里面的。

 

Service

启动方式

生命周期

与线程区别

与Activity的交互

 

BroadcastReceiver:

特殊模式

注意事项

 

Fragment:

生命周期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值