ActivityLifecycleCallbacks 的简单使用
转载自 http://blog.csdn.net/tongcpp/article/details/40344871
ActivityLifecycleCallbacks是什么?
- Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。
为什么用ActivityLifecycleCallbacks?
- 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理:
- @Override
- protected void onResume() {
- super.onResume();
- //TODO 处理和统计代码
- Log.v(TAG, "onResume");
- Logger.v(TAG, "onResume");
- Logging.v(TAG, "onResume");
- ...
- }
- ActivityLifecycleCallbacks接口回调可以简化这一繁琐过程,在一个类中作统一处理
ActivityLifecycleCallbacks怎么用?
- android.app.Application.ActivityLifecycleCallbacks
- 要求API 14+ (Android 4.0+)
- 继承Application
- public class BaseApplication extends Application
- 在AndroidManifest里起用自定义Application
- <application android:name=".global.BaseApplication"
-
重写Application的onCreate()方法,或在Application的无参构造方法内,调用Application.registerActivityLifecycleCallbacks()方法,并实现ActivityLifecycleCallbacks接口
- public void onCreate() {
- super.onCreate();
- this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
- @Override
- public void onActivityStopped(Activity activity) {
- Logger.v(activity, "onActivityStopped");
- }
- @Override
- public void onActivityStarted(Activity activity) {
- Logger.v(activity, "onActivityStarted");
- }
- @Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
- Logger.v(activity, "onActivitySaveInstanceState");
- }
- @Override
- public void onActivityResumed(Activity activity) {
- Logger.v(activity, "onActivityResumed");
- }
- @Override
- public void onActivityPaused(Activity activity) {
- Logger.v(activity, "onActivityPaused");
- }
- @Override
- public void onActivityDestroyed(Activity activity) {
- Logger.v(activity, "onActivityDestroyed");
- }
- @Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- Logger.v(activity, "onActivityCreated");
- }
- });
- };
-
运行结果(Logcat日志)
- 10-21 14:32:57.722: V/WelcomeActivity(8085): onActivityCreated
- 10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityStarted
- 10-21 14:32:57.762: V/WelcomeActivity(8085): onActivityResumed
- 10-21 14:32:59.164: V/WelcomeActivity(8085): onActivityPaused
- 10-21 14:32:59.194: V/MainActivity(8085): onActivityCreated
- 10-21 14:32:59.224: V/MainActivity(8085): onActivityStarted
- 10-21 14:32:59.224: V/MainActivity(8085): onActivityResumed
- 10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityStopped
- 10-21 14:32:59.735: V/WelcomeActivity(8085): onActivityDestroyed
- 10-21 14:33:06.502: V/MainActivity(8085): onActivityPaused
- 10-21 14:33:06.612: V/MainActivity(8085): onActivityStopped
- 10-21 14:33:06.612: V/MainActivity(8085): onActivityDestroyed
ActivityLifecycleCallbacks的拓展用法
-
本次初探仅尝试使用Log日志工具作简要测试,如需满足较复杂的统计或调试需求时,此法可能会大大减少插入代码量,提高效率
-
API仅在14+版本上提供此接口回调,Android 4.0以下系统如何使用?
- API仅针对上述几个Activity的生命周期事件留出了接口回调,可能已无法满足日益过渡为使用Fragment的今日需求, 如何在更大范围内应用LifecycleCallbacks?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?