將其標記爲重複之前,請仔細閱讀完整描述(本週有過不愉快的體驗)。即使未註冊,活動也泄露了IntentReceiver
這是我的代碼,確保我在所有五種方法中添加了註冊和取消註冊。 myReceiver是一個類級別的私有非靜態成員。
@Override
public void onPause() {
super.onPause();
UnRegisterInternetBroadcast();
storePreferences();
}
@Override
public void onResume() {
super.onResume();
RegisterInternetBroadcast();
}
@Override
protected void onStop()
{
UnRegisterInternetBroadcast();
super.onStop();
}
@Override
protected void onDestroy() {
UnRegisterInternetBroadcast();
super.onDestroy();
}
我沒有在我的Manifest xml中定義的<receiver>
。我所擁有的是以下代碼來處理。
public void RegisterInternetBroadcast() {
if(myReceiver == null) {
IntentFilter filter = new IntentFilter();
filter.addAction(getPackageName() + "android.net.conn.CONNECTIVITY_CHANGE");
myReceiver = new InternetConnectionReceiver();
registerReceiver(myReceiver, filter);
myReceiver = null;
}
System.gc();
}
public void UnRegisterInternetBroadcast() {
if(myReceiver != null) {
myReceiver.clearAbortBroadcast();
unregisterReceiver(myReceiver);
}
}
根據互聯網上的其他文章和問題在stackoverflow我不應該收到任何內存泄漏。我的代碼中缺少任何東西? targetSdkVersion是25,我正在測試Marshmallow操作系統。
問候,
戒
yikes ...這是我的恥辱..我的意思是把它們寫在UnRegisterInternetBroadcast()放置在完全錯誤的地方。 – harshal