Android开发 - ActivityLifecycleCallbacks用法初探

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?
时间: 2024-10-10 01:21:45

Android开发 - ActivityLifecycleCallbacks用法初探的相关文章

Android开发之单例模式初探(源代码分享)

单例模式是什么呢?是Java23中模式之一,在Android开发中也有着广泛的运用,比如Calander类,在创建对象的时候并不是通过 new Calander而是Calander.getInstnce(),这就是单例模式的一种运用,应用的场合是什么呢?我们在很多时候有些对象只需要一个就够了,并不需要多个,就比如古代的皇帝,一山不容二虎,老虎多了只有坏处没有好处.它的作用就是保证整个应用程序中某个实例有且只有一个,one  is all! 单例模式呢分为两种一个是饿汉模式一个是懒汉模式,让我们先

Android开发之适配器模式初探

我们在开发Android的时候经常通过Adapter把数据和UI对象连接在一起,spinner.ListView之类的控件都可以用适配器来自定义其组建,使其更加丰富.适配器模式是将两个不兼容的类纠合在一起使用,属于结构型,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.简单的来说,就是你有一个机器人是只会踢足球的,另一个机器人只会打篮球的,然后你想有让他既会踢足球又会打篮球,那他的芯片里要将这两种方法都集合在一起,可我们又不知道原来的踢足球和打篮球的方法是怎么写的,也不想改啊

Android开发 - ActivityLifecycleCallbacks使用方法初探

ActivityLifecycleCallbacks是什么? Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理. 为什么用ActivityLifecycleCallbacks? 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理: @Override protected void onResume() { super.onResume(); //TODO 处

Android开发之策略模式初探

策略模式主要定义一系列的算法,学过数据结构的朋友肯定知道,对于数组从大到小进行排序有着很多的算法,比如冒泡.交换.快速插入等等,策略模式就是把这些算法封装成一个个独立的类,方便使用时候进行任意的调用.这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定义一些公用变量和方法: public abstract class

Android开发:SurfaceView基本用法总结

本文主要讲解如何使用SurfaceView,旨在帮助大家快速上手SurfaceView开发.由于上篇文章<Android开发:SurfaceView基本用法总结及开发问题分享> 排版不佳,所以另起一篇单独介绍SurfaceView的基本用法总结. 转载请注明作者xiong_it和链接:http://blog.csdn.net/xiong_it/article/details/45966309,谢谢! SurfaceView基本介绍 1.系统给SurfaceView提供了一个专门绘图的Surfa

Android开发技巧之viewstub用法详解及实现延迟加载

这一篇是接着上面的include标签的例子来讲的,地址http://blog.csdn.net/jason0539/article/details/26131831 上一篇的布局中间就用了viewstub这个控件,现在来说一下其作用和用法 " ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View " 需要注意的是,加载view之后,viewstub本身就会被新加载进来的view替换掉 上代码了,看完就理解了

Android开发之工厂模式初探

工厂模式(Factory)是比较常见的一种模式我觉得也是一种非常容易理解的一种模式,举个简单的例子吧,我们小时候经常考试,每次最害怕的就是爸妈问考试试卷的分数,不同的分数我们的心情也是不一样的.那么我们就根据这个情况以工厂模式写一个Java程序. public class Factory { public static Student_test creator(String rank){ if(rank.equals("优秀")){ return new Student_Laugh()

Android开发资源文件用法小结

本文用来记录在Android开发中经常用到的一些用法 arrays.xml定义数组 例: <resources> <!-- share items --> <string-array name="app_share_items"> <item>新浪微博</item> <item>腾讯微博</item> </string-array> </resources> 纯色圆角背景 <

Android开发之日期、时间选择器(DatePicker和TimePicker)的功能和用法

日期.时间选择器(DatePicker和TimePicker)的功能和用法 DatePicker和TimePicker是两个比较常用的控件,它们都从FrameLayout派生而来,其中DatePicker用于选择日期.TimePicker用于选择时间. DatePicker和TimePicker在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期.时间:开发者可以通过为DatePicker添加OnDateChangedListener.为TimePicker添加OnTimeC