Activity 7大生命周期

Xamarin C# 方法大写On开头,每个方法里面打印日志Log.Debug,对应截图里Logcat输出日志。

作用

  1. OnCreate()
    Activity第一次创建时调用,只执行1次;做初始化,加载布局SetContentView
  2. OnStart()
    页面变为对用户可见,还不能交互
  3. OnResume()

OnStart执行完立刻调用OnResume;适合刷新界面数据,处理APP退后台期间发生过的业务事件。
页面拿到焦点,进入运行状态,可以和用户交互

  1. OnPause()

PPT:APP退到后台就触发;用来持久化保存数据、释放大对象、释放蓝牙等硬件资源。
页面失去焦点,被别的页面遮挡;还部分可见

  1. OnStop()

Activity完全看不见触发,按回退按钮会走到这里;停止服务、释放资源。
页面完全不可见,进入停止状态。

  1. OnRestart()

处于Stop停止状态的Activity,重新激活时调用;执行完马上调用OnStart();执行该方法代表Activity没有被系统杀死回收。
示例:从新闻详情页按返回键回到新闻列表页,列表页触发OnRestart

  1. OnDestroy()

生命周期最后一步,销毁释放资源;执行完Activity彻底死亡,不再调用任何生命周期方法。
内存不足系统回收Stop状态Activity,不一定执行OnDestroy

完整Xamarin‑Android代码

通过带日志打印演示

using Android.App;
using Android.OS;
using Android.Util;

namespace FirstDemo
{
    [Activity(Label = "MainActivity")]
    public class MainActivity : Activity
    {
        const string Tag = "FirstDemo.MainActivity";

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.Main);
            Log.Debug(Tag, "OnCreate。");
        }

        protected override void OnStart()
        {
            base.OnStart();
            Log.Debug(Tag, "OnStart。");
        }

        protected override void OnResume()
        {
            base.OnResume();
            Log.Debug(Tag, "OnResume。");
        }

        protected override void OnPause()
        {
            base.OnPause();
            Log.Debug(Tag, "OnPause。");
        }

        protected override void OnStop()
        {
            base.OnStop();
            Log.Debug(Tag, "OnStop。");
        }

        protected override void OnRestart()
        {
            base.OnRestart();
            Log.Debug(Tag, "OnRestart。");
        }

        protected override void OnDestroy()
        {
            base.OnDestroy();
            Log.Debug(Tag, "OnDestroy。");
        }
    }
}

Logcat日志

读者可以在底部的输出窗口种查看logcat日志

OnPause。      // 打开SecondScreen,MainActivity暂停
OnStop。       // MainActivity完全看不见,进入停止状态

// 按返回键从SecondScreen回到MainActivity
OnRestart。    // MainActivity从停止状态重新激活
OnStart。
OnResume。     // MainActivity回到前台可交互

OnDestroy。    // SecondScreen页面销毁Code language: JavaScript (javascript)

日志执行顺序印证流程:
后台恢复:OnRestart → OnStart → OnResume

发表回复

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