2017-01-02 91 views
2

所以,我有這種方法,讓我知道如果用戶有一個活動的互聯網連接。它運作良好。然而,泄漏金絲雀已經識別出與連接管理器相關聯的內存泄漏。我目前沒有在我知道的任何時候關閉我的代碼中的任何地方的connectivityManager。ConnectivityManager泄漏,不知道如何解決

我試着關閉onManager中的connectivityManager。要麼這不是一個選項,或者我不知道代碼。說實話,我只是試圖讓自動填充告訴我如何去做。沒有運氣。

public static boolean isNetworkAvailable(Context context) { 
    ConnectivityManager connectivityManager =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo =connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo !=null && activeNetworkInfo.isConnected(); 
} 
+0

context.getSystemService可以由getSystemService替換 –

+0

@santosh在進行更改時出現以下錯誤。非靜態方法'getSystemService(java.lang.string)'不能從靜態上下文中引用 – seekingStillness

+0

那麼你的代碼保持良好。 –

回答

8

使用該功能防止泄漏,

ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext() 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 
+0

謝謝,我加了代碼,沒有錯誤。在成功測試後,我會接受答案。 – seekingStillness

+0

高興地幫助:) –

+0

想知道爲什麼它的防止泄漏/爲什麼在 –

1

這是版本的Android M中的錯誤,並已固定在L.

的原因是,在男,ConnectivityManager持有一審作爲靜態對象。

當您首次使用活動上下文獲取它時,靜態對象將始終引用您的活動。使用應用程序上下文將解決問題。