2017-07-17 209 views
0

後我使用流式細胞儀獲得的消息以及接收器,撒施郵件到我的接收器呼叫活動的方法破壞

接收器代碼:

public class MessageReceiver extends BroadcastReceiver { 

    private FCMInterface listener; 

    public MessageReceiver(FCMInterface listener){ 

     this.listener = listener; 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 

    } 
    } 

我使用的接口來連接我的接收器到活動(活動實現FCMInterface)

問題是如果活動onDestroy調用,然後我調用我的界面的功能會發生什麼?

+0

你需要檢查activity.isFinishing()是否爲安全編碼 –

+0

@RasoulMiri我想知道方法會不會調用 –

+0

這很方便,你只需要把Log.i(「==」,「 isCall「);在函數中,看看它是否打印 –

回答

0

即使在調用onDestroy()方法之後,該類中實現的方法也會被調用。

但您無法再訪問活動上下文或與UI相關的任何內容。

設置廣播接收器時,您應該在start()和stop()生命週期回調中註冊和取消註冊。否則會導致內存泄漏異常。

在良好的android編程實踐中,您通常會嘗試避免在調用onDestroy()之後持有與活動上下文相關的對象的引用的情況。

+0

所以我可以把一個方法在我的界面來檢查活動是否運行,是嗎? –

+0

肯定的是,在接口方法 –

0

我認爲你應該發送意圖到你的活動(並設置你的活動singleTop或singleTask或SingleIntance如果你需要)而不是界面。

+0

中使用isFinishing()我必須使用startActivity()發送意圖到活動,但是我想更新活動,如果它的open else顯示通知或沒有 –