Activity相关

说下Activity生命周期 ?

主要生命周期如下:
onCreate:Activity创建
onStart:Activity可见,但是不能与用户交互
onResume:Activity在前台与用户交互
onPause:Activity可见,但不能与用户交互
onStop:Activity已经完全被挡住,不可见
onDestroy:Activity被销毁

在Activity A中启动另一个Activity B 会调用哪些方法?如果B是透明主题的又或则是个DialogActivity呢 ?

调用的方法有:onPause(A)->onCreate(B)->onStart(B)->onResume(B)->onStop(A)
如果是透明主题或者是Dialog主题的Activity,则A不会调用onStop

说下onSaveInstanceState()方法的作用 ? 何时会被调用?

onSaveInstanceState() 用于在Activity因为资源不足被杀死或者横竖屏切换时保存Activity状态信息,比如输入框的文字等等。

说下 Activity的四种启动模式、应用场景 ?

standard:标准模式。每次启动都会创建一个新的Activity
singleTask:栈内复用。当前栈是目标栈的时候,只会创建同一份,并自动挪到栈顶,栈内前面的Activity都会被清除。一般app内复用的界面
singleTop:栈顶复用。当前栈是目标栈的时候,如果目标Activity在栈顶则复用,如果不是则重新创建一个
singleInstance: 整个系统内只创建一份实例,并且单独一个栈

了解哪些Activity常用的标记位Flags?

FLAG_ACTIVITY_NEW_TASK:为Activity指定singeTask启动模式
FLAG_ACTIVITY_SINGLE_TOP:为Activity指定singleTop启动模式
FLAG_ACTIVITY_CLEAR_TOP:启动后清除栈内位于它上面的Activity,如果使用标准模式启动,则会把它和它上面的Activity都清除,再重新创建一个Activity放到栈顶
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:具有这个标记的Activity不会出现在历史Activity列表中

说下 Activity跟window,view之间的关系?

Window是一个抽象类,它的具体实现是PhoneWindow,WindowManager是外接访问window的入口。WindowsManager的具体实现是WindowManagerService。WindowManager和WindowMangerService通过IPC交互。Android上所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast。它们的视图实际上都是附加在Window上,因此单击事件由Window传递给DecorView,再由DecorView传递给具体View,setContentView在底层也是通过Window来完成的。(待详细解析)

横竖屏切换的Activity生命周期变化?

onPuase->onStop->onDestroy->onCreate->onStart->onResume
onSaveInstanceState会在onStop之前调用,可能在onPause之前,也可能在onPause之后

如何启动其他应用的Activity?

显示调用,隐式调用 startActivity,action,category

Activity的启动过程?(重点)

调用过程:
Activity: startActivity->…->startActivityForResult
Instrumentation:execStartActivity
ActivityManagerNative:startActivity
ActivityManagerService:startActivity-> StartActivityAsUser
ActivityStackSupervisor:startActivityMayWait->resumeTopActivityLocked->resumeTopActvityInnerLocked->startSpecificActivityLocked->realStartActvityLocked
ActivityThread.ApplicationThread:scheduleStopActivity->发送H.LAUNCH_ACTIVITY消息->handleLaunActivity->performLaunchActivity->performLaunchActivity
通过Instrumentation 的newActivity方法使用类加载器创建Activity对象
通过LoadedApk的makeApplication方法来常识创建Application

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值