Activity相关面试题

2022-02-25  本文已影响0人  Alsan_L3
  1. 启动模式

这种模式主要是为了,在不同程序间共享同一个Activity实例。

  1. 生命周期
  1. 什么时候Activity单独走onPause()不走onStop()?
  1. 什么时候Activity不执行onDestory()?
  1. onSaveInstanceState()被执行的场景有哪些:
  1. Activity启动流程:
    a. Activity1调用startActivity,实际会调用Instrumentation类的execStartActivity方法,Instrumentation是系统用来监控Activity运行的一个类,Activity的整个生命周期都有它的影子;
    b. 通过跨进程的binder调用,进入到ActivityManagerService中,其内部会处理Activity栈,通知Activity1 Pause,Activity1 执行Pause 后告知AMS;
    c. 在ActivityManagerService中的startProcessLocked中调用了Process.start()方法。并通过连接调用Zygote的native方法forkAndSpecialize,执行fork任务。之后再通过跨进程调用进入到Activity2所在的进程中;
    d. ApplicationThread是一个binder对象,其运行在binder线程池中,内部包含一个H类,该类继承于类Handler。主线程发起bind Application,AMS 会做一些配置工作,然后让主线程 bind ApplicationThread,ApplicationThread将启动Activity2的信息通过H对象发送给主线程。发送的消息是EXECUTE_TRANSACTION,消息体是一个 ClientTransaction,即 LaunchActivityItem。主线程拿到Activity2的信息后,调用Instrumentation类的newActivity方法,其内通过ClassLoader创建Activity2实例;
    e. 通知Activity2去performCreate,走生命周期流程。
  2. a->b->c界面,其中b是SingleInstance的,那么c界面点back返回a界面,为什么?
  1. Activity常用的标记位Flags
  1. 你知道onNewIntent吗?
  1. 有什么方法可以启动一个没有在AndroidManifest.xml中注册过的Activity?
  1. Intent传递数据是否有限制?
  1. 如何在Application中获取当前Activity实例
上一篇下一篇

猜你喜欢

热点阅读