美文网首页
Android之Activity全面解析

Android之Activity全面解析

作者: 搬砖的小蜗牛 | 来源:发表于2022-01-13 18:11 被阅读0次

    本文分为以下几个部分:
    1、Activity是什么?
    2、如何创建Activity?
    3、Activity生命周期
    4、Activity启动模式详解

    Activity是什么?

    Activity是一个应用程序组件,用户可以与其提供的屏幕进行交互,例如拨打电话,拍照,发送电子邮件等。Activity 提供窗口供应用在其中绘制界面。此窗口通常会填满屏幕,但也可能比屏幕小,并浮动在其他窗口上面。

    大多数应用包含多个屏幕,意味着会有多个Activity。通常,应用中的一个 Activity 会被指定为主 Activity,这是用户启动应用时出现的第一个屏幕。然后,每个 Activity 可以启动另一个 Activity,以执行不同的操作。例如,一个简单的电子邮件应用中的主 Activity 可能会提供显示电子邮件收件箱的屏幕。主 Activity 可能会从该屏幕启动其他 Activity,以提供执行写邮件和打开邮件这类任务的屏幕。

    如何创建Activity?

    要创建Activity,必须创建Activity的子类。在子类中,您需要实现当Activity在其生命周期的各个状态之间转换时系统调用的回调方法,如下:

    public class ExampleActivity extends AppCompatActivity {
    
     @Override
        public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
            super.onCreate(savedInstanceState, persistentState);
           //您必须实现此方法。系统在创建Activity时调用此方法。最重要的是,您必须在此处调用以定义Activity用户界面的布局。
            setContentView();
        }
    }
    

    最重要的要在manifest中声明此Activity及其特定属性:

        <manifest ... >
          <application ... >
              <activity android:name=".ExampleActivity" />
              ...
          </application ... >
          ...
        </manifest >
    

    Activity的生命周期

    一个 Activity 在其生命周期中会经历多种状态。您可以使用一系列回调来处理状态之间的转换。
    Activity完整的生命周期方法:

    public class ExampleActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // The activity is being created.
        }
        @Override
        protected void onStart() {
            super.onStart();
            // The activity is about to become visible.
        }
        @Override
        protected void onResume() {
            super.onResume();
            // The activity has become visible (it is now "resumed").
        }
        @Override
        protected void onPause() {
            super.onPause();
            // Another activity is taking focus (this activity is about to be "paused").
        }
        @Override
        protected void onStop() {
            super.onStop();
            // The activity is no longer visible (it is now "stopped")
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            // The activity is about to be destroyed.
        }
    }
    

    下面介绍这些方法:

    onCreate()

    必须实现此回调,它会在系统创建您的 Activity 时触发。最重要的是,您必须在此处调用 setContentView() 来定义 Activity 界面的布局。onCreate完成后,下一个回调将是onStart()

    onStart()

    onCreate()退出后,Activity 将进入“已启动”状态,并对用户可见。此回调包含 Activity 进入前台与用户进行互动之前的最后准备工作。

    onResume()

    系统会在 Activity 开始与用户互动之前调用此回调。此时,该 Activity 位于 Activity 堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在onResume()方法中实现的。
    onResume()回调后面总是跟着onPause()回调。

    onPause()

    当 Activity 失去焦点并进入“已暂停”状态时,系统就会调用 onPause()。例如,当用户点按“返回”或“最近使用的应用”按钮时,就会出现此状态。当系统为您的 Activity 调用onPause() 时,从技术上来说,这意味着您的 Activity 仍然部分可见,但大多数情况下,这表明用户正在离开该 Activity,该 Activity 很快将进入“已停止”或“已恢复”状态。

    如果用户希望界面继续更新,则处于“已暂停”状态的 Activity 也可以继续更新界面。例如,显示导航地图屏幕或播放媒体播放器的 Activity 就属于此类 Activity。即使此类 Activity 失去了焦点,用户仍希望其界面继续更新。
    您不应使用 onPause()来保存应用或用户数据、进行网络呼叫或执行数据库事务。
    onPause() 执行完毕后,下一个回调为onStop()或 onResume()具体取决于 Activity 进入“已暂停”状态后发生的情况。

    onStop()

    当 Activity 对用户不再可见时,系统会调用onStop()。出现这种情况的原因可能是 Activity 被销毁,新的 Activity 启动,或者现有的 Activity 正在进入“已恢复”状态并覆盖了已停止的 Activity。在所有这些情况下,停止的 Activity 都将完全不再可见。
    系统调用的下一个回调将是onRestart()(如果 Activity 重新与用户互动)或者 onDestroy()(如果 Activity 彻底终止)。

    onRestart()

    当处于“已停止”状态的 Activity 即将重启时,系统就会调用此回调。onRestart() 会从 Activity 停止时的状态恢复 Activity。此回调后面总是跟着 onStart()。

    onDestroy()

    系统会在销毁 Activity 之前调用此回调。
    此回调是 Activity 接收的最后一个回调。通常,实现 onDestroy()是为了确保在销毁 Activity 或包含该 Activity 的进程时释放该 Activity 的所有资源。

    最后给个经典图片:


    activity lifecycle.png

    Activity启动模式详解

    详细参考:深入理解Activity启动模式

    相关文章

      网友评论

          本文标题:Android之Activity全面解析

          本文链接:https://www.haomeiwen.com/subject/gxjmcrtx.html