重複としてマークする前に、完全な説明を読んでください(今週は悪い経験をしています)。登録していなくても、アクティビティがIntentReceiverを漏らした
ここに私のコードは、すべての5つの方法で登録と登録解除を追加することを確認することです。 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();
}
私のマニフェスト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 OSでテストしています。
よろしく、
ハルシャ
yikes ...それは私のために残念です...私はそれらを完全に間違った場所に置かれたUnRegisterInternetBroadcast()に書き込むことを意味しました。 – harshal