我有一個Service
從我開始AsyncTask
從給定的計時器做後臺任務。我的需要需要短暫的網絡任務,這就是爲什麼我堅持Asynctask
。從服務傳遞上下文而不泄漏它
從Asynctask
我在做一些操作(如啓動通知),需要context
。現在,當我在我的AsyncTask
初始化context
我得到一個警告「這個領域泄漏上下文對象。」
我已經看到了關於同一問題的數量,但他們都被有關Activity/Fragment
。所以我的問題是,我如何在我的AsyncTask
(頂級課程)中使用context
而不會漏水?
我也在做一些'Jsoup'調用,這就是爲什麼我嚴重依賴'onPostExecute'(來檢查結果是否爲null)。調用'getApplicationContext()'將是最佳實踐還是持有'服務上下文'的'弱引用'? –
@ Michal_196:解析HTML與主應用程序線程無關;你不需要'onPostExecute()'來解析HTML。關於'Context',請使用'getApplicationContext()'。這將返回一個單獨的'Context'('Application'的子類),一個初始化爲啓動過程的一部分。實際上,這個單例實際上是「預泄漏」的,你不能通過持有引用來進一步泄漏它。 – CommonsWare