Android开发经验谈Android技术知识Android开发

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

2019-12-07  本文已影响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()之前调用的。

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

上一篇 下一篇

猜你喜欢

热点阅读