Activity

来源:互联网 发布:excel不能导入数据 编辑:程序博客网 时间:2024/06/11 05:42

一、简述一下Activity的生命周期

  • 首先在回答这个问题之前,我们先来说一下什么是Activity。
    • Activity是安卓中与用户进行交互的接口,它提供了一个界面,可以让用户进行点击、滑动等一系列操作。
  • 在了解了activity是什么以后,我们还必须了解一下activity的四种状态
    • running状态:这时activity处于活跃状态,用户可以与其进行交互,可以进行点击、滑动等操作,界面会做出响应。
    • pause状态:这时activity处于可见状态,但是失去触摸的能力。一般activity被一个透明的activity或者非全屏的activity覆盖,此时被覆盖的activity就处于pause状态。如果内存紧张,会被系统回收。
    • stop状态:此时的activity处于完全不可见状态。一般是被另一个activity完全覆盖时,被覆盖的activity处于的状态。如果内存紧张,会被系统回收。
    • killed状态:此时的activity已经被系统回收,它保存的信息以及成员变量都会被销毁。

在了解了以上内容以后,我们就可以来说一下activity的生命周期了。

activity一共有7个生命周期方法。

  • 当activity启动的时候,它会经过如下生命周期方法,依次是:onCreate()–>onStart()–>onResume()
    • onCreate():一般是完成界面以及数据的初始化工作,是activity启动时第一个被调用的方法。
    • onStart():此时的activity处于可见状态,但是还不可以与用户进行交互。
    • onResume():此时的activity已经完全完成加载动作,用户可以对其进行滑动、点击等操作。
  • 当点击Home键返回主界面的时候,此时的activity处于不可见状态了,它会经过以下生命周期方法:onPause()–>onStop()
    • onPause():此时activity还是处于可见状态的,但是已经失去与用户进行交互的能力了。与之对应的是onResume()方法。
    • onStop():此时的activity处于完全不可见状态了。
  • 再次返回原Activity,由于之前已经缓存过activity,所以再次回来不会走onCreate()方法,它的生命周期方法如下:onRestart()–>onStart()–>onResume()
    • onRestart():从缓存中重新加载activity会走此方法。
  • 退出activity,它会走如下生命周期方法:onPause()–>onStop()–>onDestroy()
    • onDestroy():走到该方法表示activity已经被销毁了,它的成员变量等已经被系统回收了。

二、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独享任务栈。

四、Android进程优先级

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

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

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

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

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

五、Scheme跳转模式

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

先总结这么多吧,后面肯定会有补充,欢迎大家分享自己在面试过程中遇到的有关activity的有关问题,可以留言告诉我,我会加到博客中去。