0
我有一個片段,做一些背景http調用,因爲我不希望進程被配置更改中斷片段聲明爲retainInstance。 由於服務需要從應用程序的密鑰庫中讀取令牌,因此需要對上下文進行引用。所以,在OnAttach方法我抓住從託管活動的應用程序上下文的引用:對Application上下文的引用是否會泄漏我保留的片段?
public override void OnAttach(Android.App.Activity activity)
{
base.OnAttach(activity);
appContext = activity.ApplicationContext;
}
我不能重置OnDestroyView此引用,因爲碎片可能仍然需要它。
對應用程序上下文的這種引用是否會泄漏我的碎片?
我不太確定是否仍然存在循環引用,其中應用程序以某種方式指向活動並且活動指向片段,但感謝您的確認,Mark! –
@JannieT:'應用程序'並不適用於活動等,除非你自己在一個子類中進行(否則這將是內存泄漏,除非仔細管理)。 – CommonsWare
我可以假設在使用retainFragments時應始終嘗試使用applicationContext?例如,在片段的onCreate()方法中,我調用val preferences = PreferenceManager.getDefaultSharedPreferences(activityContext)。如果我旋轉將泄漏宿主片段的活動的設備。我對麼? – feresr