Android Activity介绍

本文详细介绍了Android Activity的生命周期,包括各个状态说明、状态变换图、事件回调函数及其执行顺序,以及Activity的启动模式。此外,还探讨了ListActivity和PreferenceActivity的使用,包括旧的实现方法和新的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在了解Activity的时候,我们需要先了解下Context这个类。

Activity生命周期

这里写图片描述

状态说明

状态 说明
活动状态 当Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互,则这个Activity处于活动状态。
暂停状态 当Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能与用户进行交互,则这个Activity处于暂停状态。
停止状态 当Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡,则这个Activity处于停止状态。
非活动状态 活动状态、暂停状态和停止状态是Activity的主要状态,不在以上三种状态下的Activity的则处于非活动状态。

状态变换图

这里写图片描述

  • Activity启动后处于活动状态,此时的Activity位于界面的最上层,是与用户正在进行交互的组件,因此Android系统会努力保证处于活动状态的Activity的资源需求,资源紧张的时候可以终止其他状态的Activity;
  • 如果用户启动了新的Activity,部分遮挡了当前的Activity,或新的Activity是半透明的,则当前的Activity转换为暂停状态,Andorid系统仅为处于活动状态的Activity释放资源时才终止处于暂停状态的Activity
  • 如果用户启动新的Activity 完全遮挡了当前的Activity,则当前的Activity转变为停止状态,停止状态的Activity将优先被终止
  • 活动状态的Activity被用户关闭后,以及暂停状态或者停止状态的Activity被系统终止后,Activity便进入了非活动的状态。
  • 注意: 一般来说,Andorid系统会优先终止处于停止状态,且位置靠近栈底的Activity,因为这些Activity被用户再次调用的机会最小,且在界面上用户是看不到的。

事件回调事件

这里写图片描述

Activity生命周期的事件回调函数

函数 是否可终止 说明
onCreate() Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或者回复信息等。
onStart() 当Activity显示在屏幕上,该函数被调用。一般用来初始化与更新界面相关的资源。
onRestart() 当Activity从停止状态进入活动状态前,调用该函数。
onResume() 当Activity可以接收用户输入(获得焦点)的时候,该函数被调用。此时的Activity位于Activity栈的栈顶。
onPause() 当Activity进入暂停状态的时候,该函数被调用。主要用来保存持久数据,关闭动画、释放CPU资源等。该函数中的代码必须简短,因为另一个Activity必须等待该函数执行完毕之后才能显示在界面上。
onStop() 当Activity不对用户可见后,该函数被调用,Activity进入停止状态。一般用来暂停或停止与更新界面相关的操作。
onDestory() 在Activity被终止前,即进入非活动状态前,该函数被调用。
有两种情况该函数会被调用:1. 程序主动调用finish()函数;2.程序被Android系统终结。

注意:

  • onPause()方法控制Activity是否具有交互的功能。
  • onStop()方法控制Activity是否具有可视化的功能。

Activity状态保存/恢复的事件回调函数

函数 说明
onSaveInstanceState() 暂停或者停止Acitivity前调用该函数,用以保存Activity的临时状态信息。
onRestoreInstanceState() 恢复onSaveInstanceState()保存的Activity状态信息。

Activity的生命周期的四个不同的阶段

Activity的生命周期可划分为4个不同的阶段,且在不同的阶段按一定的顺序执行相应的事件回调函数。

  • 启动Activity
    • 在这个阶段依次执行3个事件回调函数:onCreate → onStart → onResume
  • Activity失去焦点
    • 在这个阶段依次执行2个事件回调函数:onPause → onStop
  • Activity重新获得焦点
    • 如果Activity重新获得焦点,会依次执行3个事件回调函数:onRestart → onStart → onResume
  • 关闭Activity
    • 当Activity被关闭时,会依次执行3个事件回调函数:onPause → onStop → onDestroy

onPause函数执行过程中改变系统执行轨迹的情况

  • 当Activity失去焦点或被正常关闭时,系统将自动执行onPause函数,其正常执行顺序分别为: onPause → onStop → onPause → onStop → onDestroy
  • 如果在执行onPause函数的过程中Activity重新获得了焦点,然后又失去了焦点,系统将不会按照上述顺序在其之后执行onStop函数,而是按照如下顺序执行相应的事件回调函数:onPause → onResume → onPause

onStop函数执行过程中改变系统执行轨迹的情况

  • 当Activity被正常关闭时,系统将自动执行onStop函数,其正常执行顺序为: onPause → onStop→ onDestroy
  • 如果在执行onStop函数的过程中Activity重新获得了焦点,然后又失去了焦点,系统将不会按照上述顺序在其之后执行onDestroy函数,而是按照如下顺序执行相应的事件回调函数:onStop → onRestart → onStart → onResume → onPause → onStop

常见的Activity子类

Andorid常见Activity子类使用介绍。

ListActivity

/**
 * @author notzuonotdied
 * @date 18-1-8
 * @describe TODO
 */

public class TestListActivity extends ListActivity {
   
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        // 创建ListView要用的ArrayList
        List<String> items = fillArray();
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, items);
        setListAdapter(adapter);
    }

    private List<String> fillArray() {
   
        List<String> items = new ArrayList<>();
        items.add("Java");
        items.add("Kotlin");
        items.add("Scala")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值