2014-04-29 267 views
0

有沒有辦法讓我們從活動之外接收諸如onResumeonWindowFocusChanged等事件?當這些事件在另一個類中引發時,我想運行一些代碼,這個類只涉及到活動。從活動外部接收Android活動事件?

編輯:在我的情況下,我不能修改Activity類,或在子類中重寫它。

回答

0

這些方法由Android OS調用。你可以做的最好的事情就是讓你的Activity擁有這個其他類的實例,並且你將在該類中創建類似的方法,以便你的Activity在它自己的生命週期方法中調用。

public class SomeOtherClass { 
    public void onResume() { 
     ... 
    } 

    public void onPause() { 
     ... 
    } 

    /* other similar methods */ 
} 

public class MyActivity extends Activity { 
    private SomeOtherClass someOtherClass; // make sure to initialize this somewhere 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     someOtherClass.onResume(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     someOtherClass.onPause(); 
    } 

    /* and so one */ 
} 
+0

看起來這將是一個很好的解決方案。但是,就我而言,我無法修改Activity類,或者在子類中重寫它。不過謝謝。 –

+1

那麼你可能會卡住。 Application類中有一個名爲'registerActivityLifecycleCallbacks()'的方法,但它沒有文檔,我不知道它是如何工作的。這是我唯一能想到的其他事情。 – Karakuri

+0

該方法有一個相當有趣的返回類型。太糟糕了,它沒有記錄,因爲它看起來正是我所需要的。我會試驗這個。 –