1

これらのオプションを使用して、アプリに StrictMode を実装しました。

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectNetwork()
                .penaltyLog()
                .build());

        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                .detectActivityLeaks()
                .penaltyLog()
                .penaltyDeath()
                .build());

アプリケーションには 2 つのアクティビティ (A と B) があり、シナリオは次のとおりです。

  1. アクティビティAのonCreateメソッドにStrictModeを実装
  2. BアクティビティはAから開始されます
  3. B 活動が終了し、活動 A に戻る
  4. BアクティビティはAから開始されます
  5. B アクティビティが終了し、A アクティビティが StrictMode によって強制終了されます (penaltyDeath)

アクティビティ A が強制終了されると、次のメッセージが表示されます。

クラス AActivity; インスタンス = 2; limit=1 android.os.StrictMode$InstanceCountViolation: クラス AActivity; インスタンス = 2; android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1) で limit=1

アクティビティ B は、カスタム ボタンを介して開始されます (B アクティビティと同じように、空のコンストラクターのみがあります)。StrictMode でクラス インスタンスの制限を設定しようとしましたが、結果はありませんでした。興味深いことに、penallyDeath() オプションがないと、アクティビティ インスタンスの数が 15 ~ 17 まで増加し、その後 GC が発生します。

誰かが StrictMode で同様の問題を抱えていますか?

4

0 に答える 0