美文网首页Android开发经验谈Android技术知识Android开发
Android:为每个activity加统一操作的两种方法

Android:为每个activity加统一操作的两种方法

作者: 我爱纽约先生 | 来源:发表于2019-12-07 22:41 被阅读0次

    在Android的实际开发过程中,经常需要针对App里每个Activity进行一些统一的操作,比如打日志,加统计等等。今天给大家介绍两种方法来实现这个小需求。

    1.最传统的方法:定义一个统一父类

    这种方法大家都比较熟悉了,就是写一个父类,在这个父类的生命周期方法里加上需要的代码,比如:

    public class BaseActivity extends AppCompatActivity {
    
        private String TAG = BaseActivity.class.getCanonicalName();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Log.i(TAG, "onCreate: " + getClass().getCanonicalName());
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            Log.i(TAG, "onStart: " + getClass().getCanonicalName());
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            Log.i(TAG, "onResume: " + getClass().getCanonicalName());
        }
    }
    

    其他所有的Activity都继承自这个BaseActivity就可以了。

    2.另外一种方法,使用ActivityLifecycleCallbacks

    继承的方法大家都会,今天给大家介绍一种新方法,更加的简单,同时对业务代码的侵入性更小。

    首先,先介绍一个Application里大家不太常用的接口:registerActivityLifecycleCallbacks()

    这个接口其实也不用详细说,很简单,大家一看就会。就是在每个Activity执行其生命周期方法的时候都会通知这个回调接口,我们在对应的onActivityXXX()方法里面加上需要的业务逻辑即可。

    例子:

    public class App extends Application {
    
        private static final String TAG = "App";
    
        @Override
        public void onCreate() {
            super.onCreate();
            registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
                @Override
                public void onActivityCreated(Activity activity, Bundle bundle) {
                    Log.i(TAG, "onActivityCreated: " + activity.getClass().getCanonicalName());
                }
    
                @Override
                public void onActivityStarted(Activity activity) {
                    Log.i(TAG, "onActivityStarted: " + activity.getClass().getCanonicalName());
                }
    
                @Override
                public void onActivityResumed(Activity activity) {
                    Log.i(TAG, "onActivityResumed: " + activity.getClass().getCanonicalName());
                }
    
                //余下接口省略。。。
                
            });
        }
    }
    

    相比于第一种方法,这个方法对代码的侵入性更小,也相对更灵活一些。

    有一点需要注意,第二种方法里的ActivityLifecycleCallbacks的事件是在Activity的生命周期之前调用的。比如:ActivityLifecycleCallbacks的onActivityCreated()是在对应activity的onCreate()之前调用的。

    好了,以上就是今天想分享的内容,希望这个小小的知识点可以帮到你。

    相关文章

      网友评论

        本文标题:Android:为每个activity加统一操作的两种方法

        本文链接:https://www.haomeiwen.com/subject/bhdpgctx.html