1. 程式人生 > >監控android App Activity生命週期

監控android App Activity生命週期

說下場景:

1,監控當前應用生命週期

2,除錯應用,接手一個龐大的應用,快速知道當前是那個activity ,或者 fragment(會在另一篇中講)

3,如果你正常開發SDK ,當時你又想獲取當前的頁面的activity 

4,不修改原始碼即可在生命週期內新增自己的業務邏輯

當然你能難道app activity 生命週期,可以做很多業務,看我們自己怎麼想了。

說了這麼多, 今天要說的東西就是 Application    registerActivityLifecycleCallbacks

看下方法簽名:

public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback);

這方法能監控整個app 的activity    所以在application 中,看下 Application.ActivityLifecycleCallbacks  

public interface ActivityLifecycleCallbacks {
    void onActivityCreated(Activity var1, Bundle var2);

    void onActivityStarted(Activity var1);

    void onActivityResumed(Activity var1);

    void onActivityPaused(Activity var1);

    void onActivityStopped(Activity var1);

    void onActivitySaveInstanceState(Activity var1, Bundle var2);

    void onActivityDestroyed(Activity var1);
}

位於Applicaiton內部類  是一個介面,只要接觸過的android 的小姐姐,小哥哥們,是不是看著這些函式相當熟悉 。是不是涵蓋activity  重要的生命週期函式 下面對應對比一下。

ActivityLifecycleCallbacks
Activity
onActivityCreated
onCreate
onActivityStarted
onStart
onActivityResumed
onResume
onActivityPaused
onPause
onActivityStopped
onStop
onActivitySaveInstanceState onSaveInstanceState
onActivityDestroyed
onDestroy

通過這個表已經說明了一切,既然我們拿到Activity生命週期,其實就可以說在activity 可以插入我們想做的一切邏輯了;

寫一個簡單的例子比如我們想在 一個activity onCreate()函式中插入一個彈窗,那麼此時你又拿不到這個這個Activity 怎麼辦

第一步  我們肯定只要要操作那個activity ,但是具體的類名不知道怎麼辦 ,我們通過app 直接操作,看日誌輸出你就可以得到當前activity 類的全路徑名稱了。 


第二步,我們既然能拿到activity 的類名,有知道了這個activity 的生命週期那就好辦了。 剩下的工作就和平時彈窗一下,就是彈出dialog

 

這樣就可以完成我們的需求了  ,睿智聰明的你我相信你已經明白怎麼使用了!