Xamarin C# 方法大写
On开头,每个方法里面打印日志Log.Debug,对应截图里Logcat输出日志。
作用
- OnCreate()
Activity第一次创建时调用,只执行1次;做初始化,加载布局SetContentView。 - OnStart()
页面变为对用户可见,还不能交互。 - OnResume()
OnStart执行完立刻调用OnResume;适合刷新界面数据,处理APP退后台期间发生过的业务事件。
页面拿到焦点,进入运行状态,可以和用户交互。
- OnPause()
PPT:APP退到后台就触发;用来持久化保存数据、释放大对象、释放蓝牙等硬件资源。
页面失去焦点,被别的页面遮挡;还部分可见。
- OnStop()
Activity完全看不见触发,按回退按钮会走到这里;停止服务、释放资源。
页面完全不可见,进入停止状态。
- OnRestart()
处于Stop停止状态的Activity,重新激活时调用;执行完马上调用
OnStart();执行该方法代表Activity没有被系统杀死回收。
示例:从新闻详情页按返回键回到新闻列表页,列表页触发OnRestart。
- 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
Previous: Activity 活动生命周期