美文网首页
Android面试复习-Activity

Android面试复习-Activity

作者: Margolu | 来源:发表于2019-07-28 21:55 被阅读0次

    1.Android中4大组件

    Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。

    BroadcastRecevier:广播接收者,运用在应用程序间传输信息,可以使广播接收器来应用对一个外部事件做出响应

    ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序

    Service:服务,运行在手机后台,适合执行不需要和用户交互且需长期运行的任务

    2.Activity之间的通信方式

    通过Intent方式传递参数跳转

    广播方式

    借助类的静态变量或全局变量

    借助SharedPreference或是外部存储,如数据库或本地文件

    3.Activity四种状态

    running

    paused

    stopped

    killed

    4.Activity生命周期

    onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问

    onStart():activity在屏幕上对用户可见时调用

    onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用)

    onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态

    onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用

    onDestroy():activity被完全从系统内存中移除时调用

    onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动

    5.Activity启动过程

    (1)在安装应用时,系统会启动PackaManagerService管理服务,这个管理服务会对AndroidManifest进行解析,从而得到应用程序中的相关信息,比如service,activity,Broadcast等等,然后获得相关组件的信息。

    (2)当用户点击应用图标时,就会调用startActivitySately(),而这个方法内部则是调用startActivity(),startActivity()最终还是会调用startActivityForResult().由于startActivityForResult()是有返回结果的,系统直接返回-1,表示不需要返回结果。

    (3)startActivityForResult()通过instrumentation类中的execStartActivity()来启动activity,instrumentation这个类主要作用是监控程序和系统之间的交互。在这个execStartActivity()中会获取ActivityManagerService的代理对象,通过这个代理对象进行启动activity

    (4)在ActivityManagerService的代理对象中,通过Binder通信,调用到ApplicationThread.scheduleLaunchActivity()进行启动activity,在这个方法中创建一个ActivityClientRecord对象,用来记录启动Activity组件的信息,然后通过handler将ActivityClientRecord发送出去

    (5)在handler收到消息后,调用ActivityThread.handleLaunchActivity()启动Activity

    6.Activity切换横屏时生命周期

    onSaveInstanceState()

    onPause()

    onStop()

    onDestroy()

    onCreate()

    onStart()

    onRestoreInstanceState()

    onResume()

    7.Activity启动模式

    standard:默认的启动模式,每次启动会在任务栈中新建一个启动的activity的实例

    singletop:如果要启动的Activity实例已经位于栈顶,则不会重新创建该Activity的实例,否则会产生一个新的运行实例

    singletask:如果栈中有该Activity实例,则直接启动,中间的Activity实例将会被关闭,关闭的顺序与启动的顺序相同

    singleinstance:该启动模式会在启动一个Activity时,启动一个新的任务栈,将该Activity实例放置在这个任务栈,并且该任务栈中不会再保存其他的Activity实例

    相关文章

      网友评论

          本文标题:Android面试复习-Activity

          本文链接:https://www.haomeiwen.com/subject/sgcprctx.html