2013-08-24 21 views
0

我有一個片段,做一些背景http調用,因爲我不希望進程被配置更改中斷片段聲明爲retainInstance。 由於服務需要從應用程序的密鑰庫中讀取令牌,因此需要對上下文進行引用。所以,在OnAttach方法我抓住從託管活動的應用程序上下文的引用:對Application上下文的引用是否會泄漏我保留的片段?

public override void OnAttach(Android.App.Activity activity) 
{ 
    base.OnAttach(activity); 
    appContext = activity.ApplicationContext; 
} 

我不能重置OnDestroyView此引用,因爲碎片可能仍然需要它。

對應用程序上下文的這種引用是否會泄漏我的碎片?

回答

1

不,因爲您的Application未指向片段;該片段指向Application

+0

我不太確定是否仍然存在循環引用,其中應用程序以某種方式指向活動並且活動指向片段,但感謝您的確認,Mark! –

+0

@JannieT:'應用程序'並不適用於活動等,除非你自己在一個子類中進行(否則這將是內存泄漏,除非仔細管理)。 – CommonsWare

+0

我可以假設在使用retainFragments時應始終嘗試使用applicationContext?例如,在片段的onCreate()方法中,我調用val preferences = PreferenceManager.getDefaultSharedPreferences(activityContext)。如果我旋轉將泄漏宿主片段的活動的設備。我對麼? – feresr

相關問題