2016-04-05 31 views
0

我知道這已被問了很多次,但仍然有許多像我這樣的新開發者發現它很困難。爲了避免memory leaks應該使用哪個context? 某處,我發現我們應該getApplicationContext()和地方,嘗試使用context-activity作爲possible.Also http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html哪種上下文?爲了避免內存泄漏

Try using the context-application instead of a context-activity 

對於如

哪個上下文傳遞給RecyclerView Adapter或到Custom Dialog Class

的一種方式我發現是通過這種方式傳遞上下文到適配器

recyclerview.setAdapter(new YourAdapter(new WeakReference<Activity>(ActivityName).get())); 

我的傳遞方式是正確的嗎?

請做一個詳細的解釋,讓別人也受益。 感謝

回答

2

哪個上下文傳遞到RecyclerView適配器或自定義對話框類

當UI擔憂打交道時,總是通過Activity

我的傳遞方式是正確的嗎?

你不應該需要一個WeakReferenceActivity在一個RecyclerView使用。

爲了避免內存泄漏應該使用哪個上下文?

這是無法一般回答的。最簡單的基本規則是:使用Application作爲Context,當您擔心Context可能被保存在static範圍內時,例如在由static數據成員引用的對象中,或者諸如在線程中。否則,請使用更專注的Context(例如,您的Activity,您的Service)。

Dave Smith's blog post on contexts是我發現的主題上最好的單頁資源。

+0

但是,如果我使用weakref上下文會產生任何問題? –

+0

@SonaliPawar:由於經常發生鎖定,您可能會遇到一些與性能相關的問題。 – CommonsWare

+0

如果先生我不得不做網絡相關的工作或從適配器顯示對話框會怎麼樣,活動的上下文是適合的? –