Activity 活动生命周期

Xamarin‑Android C#,方法名是大写On开头OnCreate()OnStart()OnResume()OnPause()OnStop()OnRestart()OnDestroy(),和原生Java小写on开头只是C#命名规范差异,生命周期流转逻辑一模一样。

7个回调作用

  1. OnCreate():Activity首次创建,加载布局、初始化,只执行一次
  2. OnStart():界面变为对用户可见,但还无法交互
  3. OnResume():来到前台,获得焦点,用户可以操作,进入运行状态
  4. OnPause():界面失去焦点,被其他页面部分遮挡,进入暂停状态
  5. OnStop():界面完全不可见,进入停止状态
  6. OnRestart():处于Stop停止状态的Activity,重新激活之前触发
  7. OnDestroy():Activity销毁,释放资源

执行流程

  1. 打开页面(创建→运行)
    OnCreate()OnStart()OnResume()
  2. 页面退后台、被完全遮盖(运行→停止)
    OnPause()OnStop()
  3. 后台切回页面(Stop状态恢复)
    OnRestart()OnStart()OnResume()
  4. 关闭销毁页面
    OnPause()OnStop()OnDestroy()

系统内存不足时,位于Stop状态的Activity会被系统回收杀死,不一定会执行OnDestroy

Xamarin.Android MainActivity 完整可运行代码

using Android.App;
using Android.OS;

namespace XamarinLifeDemo
{
    [Activity(Label = "MainActivity")]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Main);
            // 页面初始化,绑定控件
        }

        protected override void OnStart()
        {
            base.OnStart();
            // 界面可见
        }

        protected override void OnResume()
        {
            base.OnResume();
            // 获取焦点,可交互
        }

        protected override void OnPause()
        {
            base.OnPause();
            // 失去焦点,暂停
        }

        protected override void OnStop()
        {
            base.OnStop();
            // 界面完全看不见
        }

        protected override void OnRestart()
        {
            base.OnRestart();
            // 从停止状态重新唤醒
        }

        protected override void OnDestroy()
        {
            base.OnDestroy();
            // 销毁、释放资源
        }
    }
}

总结

  • 启动:OnCreate → OnStart → OnResume
  • 后台恢复:OnRestart → OnStart → OnResume
  • 退出销毁:OnPause → OnStop → OnDestroy
  • 内存不足:Stop状态Activity可被系统回收,不保证调用OnDestroy

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注