有沒有辦法讓我們從活動之外接收諸如onResume
,onWindowFocusChanged
等事件?當這些事件在另一個類中引發時,我想運行一些代碼,這個類只涉及到活動。從活動外部接收Android活動事件?
編輯:在我的情況下,我不能修改Activity類,或在子類中重寫它。
有沒有辦法讓我們從活動之外接收諸如onResume
,onWindowFocusChanged
等事件?當這些事件在另一個類中引發時,我想運行一些代碼,這個類只涉及到活動。從活動外部接收Android活動事件?
編輯:在我的情況下,我不能修改Activity類,或在子類中重寫它。
我結束了使用Application.registerActivityLifecycleCallbacks
爲onResume
,並Window.getCallback()
爲onWindowFocusChanged
。謝謝@Karakuri
提及評論中的第一種方法。
這些方法由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 */
}
看起來這將是一個很好的解決方案。但是,就我而言,我無法修改Activity類,或者在子類中重寫它。不過謝謝。 –
那麼你可能會卡住。 Application類中有一個名爲'registerActivityLifecycleCallbacks()'的方法,但它沒有文檔,我不知道它是如何工作的。這是我唯一能想到的其他事情。 – Karakuri
該方法有一個相當有趣的返回類型。太糟糕了,它沒有記錄,因爲它看起來正是我所需要的。我會試驗這個。 –