在Android的實(shí)際開發(fā)過程中缸榄,經(jīng)常需要針對(duì)App里每個(gè)Activity進(jìn)行一些統(tǒng)一的操作五慈,比如打日志,加統(tǒng)計(jì)等等铭乾。今天給大家介紹兩種方法來實(shí)現(xiàn)這個(gè)小需求。
1.最傳統(tǒng)的方法:定義一個(gè)統(tǒng)一父類
這種方法大家都比較熟悉了娃循,就是寫一個(gè)父類,在這個(gè)父類的生命周期方法里加上需要的代碼斗蒋,比如:
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都繼承自這個(gè)BaseActivity就可以了捌斧。
2.另外一種方法,使用ActivityLifecycleCallbacks
繼承的方法大家都會(huì)泉沾,今天給大家介紹一種新方法捞蚂,更加的簡(jiǎn)單,同時(shí)對(duì)業(yè)務(wù)代碼的侵入性更小跷究。
首先姓迅,先介紹一個(gè)Application里大家不太常用的接口:registerActivityLifecycleCallbacks()
這個(gè)接口其實(shí)也不用詳細(xì)說,很簡(jiǎn)單俊马,大家一看就會(huì)丁存。就是在每個(gè)Activity執(zhí)行其生命周期方法的時(shí)候都會(huì)通知這個(gè)回調(diào)接口,我們?cè)趯?duì)應(yīng)的onActivityXXX()方法里面加上需要的業(yè)務(wù)邏輯即可柴我。
例子:
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());
}
//余下接口省略解寝。。艘儒。
});
}
}
相比于第一種方法聋伦,這個(gè)方法對(duì)代碼的侵入性更小夫偶,也相對(duì)更靈活一些。
有一點(diǎn)需要注意觉增,第二種方法里的ActivityLifecycleCallbacks的事件是在Activity的生命周期之前調(diào)用的兵拢。比如:ActivityLifecycleCallbacks的onActivityCreated()是在對(duì)應(yīng)activity的onCreate()之前調(diào)用的。
好了逾礁,以上就是今天想分享的內(nèi)容说铃,希望這個(gè)小小的知識(shí)點(diǎn)可以幫到你。