(一)Activity面试问题

一、Activity生命周期

什么是Activity?Activity是Android与用户进行交互的接口,它提供了一个界面,让用户进行点击、滑动等操作。

1.Activity的四种状态

  1. running状态:处于活动状态,此时用户可以点击屏幕,屏幕会做出响应;处于Activity栈顶的状态。

  2. paused状态:处于Activity失去焦点的状态,或者被非全屏的Activity占据,或者被非透明状态处于栈顶。失去焦点的Activity所有的成员变量都还在,没有被销毁,只是暂时不能与用户进行交互。内存紧张时,该Activity会被销毁。

  3. stopped状态:当一个Activity被另一个Activity完全覆盖时,被覆盖那个Activity就处于stopped状态,它将不再是可见的,内存不紧张时,其成员变量就还在。

  4. killed状态:Activity被系统回收,所保存的信息和成员变量全都被销毁。

2.Activity生命周期

1.Activity启动:onCreate()——>onStart()——>onResume()
onCreate():完成界面的初始化,数据加载等。
onStart():处于用户可见的状态,但不能进行交互。
onResume():用户可见,并能进行交互,可进行点击滑动等操作。

2.点击Home键回到主界面(Activity不可见) :onPause()——>onStop()
onPause():Activity处于可见的,但是不能被触摸的状态,对应的是onResume()方法。
onStop():表明Activity处于完全不可见的状态,当内存紧张时,该Activity可能被回收。

3.当再次回到原Activity时 :onRestart()——>onStart()——>onResume()
onRestart():由不可见状态变到可见状态的时候,会调用该方法。
onStart():处于用户可见的状态,但不能进行交互。
onResume():用户可见,并能进行交互,可进行点击滑动等操作。

4.退出当前Activity时 :onPause()——>onStop()——>onDestroy()
onPause():Activity处于可见的,但是不能被触摸的状态,对应的是onResume()方法。
onStop():表明Activity处于完全不可见的状态,当内存紧张时,该Activity可能被回收。
onDestroy():表明Activity正在被销毁,由于回收和释放资源。

3.Android进程优先级

1.前台进程 :处于前台正在与用户进行交互的Activity,或者在前台绑定的Service。

2.可见进程 :可见但不可交互的Activity。

3.服务进程 :在后台开启的Service就是服务进程。

4.后台进程 :当处于前台的Activity,被按下Home键之后,该Activity会变成后台进程,但后台进程不会被立马销毁,系统会根据内存情况进行相应的回收。

5.空进程 :表示没有活跃的组件,只是出于缓存的目的而保留,可被随时收回。

二、Android任务栈

任务栈是后进先出的栈结构,Android通过任务栈可以有序管理每一个Activity。任务栈并不是唯一的,一个App中可以有多个任务栈,但是,在某些情况下,一个Activity也可以独享一个任务栈。

三、Activity启动模式

1.Standard模式 :每次启动Activity都会创建一个Activity实例,加入任务栈中,不会考虑任务栈中是否有相同的Activity。较为消耗资源。

2.SingleTop模式 :栈顶复用模式,如果新创建的Activity与当前的Activity一致,处于栈顶的话,就不会创建新的Activity,而是复用栈顶的Activity。

3.SingleTask模式 :任务栈复用模式,在新建Activity之前会检测任务栈中是否有相同的Activity,有的话直接把Activity移到栈顶,这个Activity以上的Activity都会被移除和销毁;没有就新建一个。

4.SingleInstance模式 :在整个系统中,有且只有一个实例,而且这个Activity独享任务栈。

四、Scheme跳转模式

android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉app跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,634评论 25 709
  • 学习资料: Android群英传 Android开发艺术探索 Activity是与用户交互的第一接口,感觉说是四大...
    英勇青铜5阅读 2,615评论 15 41
  • 1 我要去北京当沙发客。 在豆瓣上找到一个名叫IT的沙发主。 他家的一张照片让人动心,玻璃茶几上有个细颈素白花瓶,...
    book君阅读 509评论 7 4
  • Node中存在一个module对象代表模块自身,拥有一个exports属性,一个文件就是一个模块。 每个js文件可...
    我就是L阅读 718评论 0 0
  • 1 工作第一个月,工资525,扣半个月工资,数字到还挺喜欢的——“我爱我”。我...
    正常不过三秒阅读 190评论 0 0