0

私は、次のようなログ印刷を行うアプリを持っています:

 GC_CONCURRENT freed 433k,7% free 7975K/8564K,paused 12ms+4ms, total 70ms

アプリは使用し続けると正常に動作しますが、画面をロックするとアプリに問題が発生します。画面ロック後にアプリが停止することがあり、画面ロック後に戻るのに 10 秒かかることがあります。 UI が死んでいます。これはメモリ リークが原因でしょうか?からGC_CONCURRENT見ると、空きメモリは 7% しかありません。どこを見落としているのだろうか。

もう1つの問題は、サブクラスを使用してアクティビティを終了することです。戻るボタンをクリックすると、次のコードが呼び出されます。

public void exit() {
    Log.e(TAG, "exit in myapplication");
    for (Activity activity : activityList) {
        Log.e(TAG, activity.getLocalClassName()+ " finish");
        activity.finish();
    }
    System.exit(0);
}

しかし、finish()完了後、アクティビティの onDestroy が呼び出されません。なぜですか? 誰でも私を助けてくれます。

PS: これらは 2 つの質問かもしれませんが、1 つに入れても問題ありませんか?

4

1 に答える 1

0

自分でアクティビティを管理するべきではありません。システムが管理しています。さらに、アプリケーションを強制終了することもできません。これは、開発者のガイドラインに反します。

とはいえ、問題は確かに、アクティビティへの参照を保持しているため、システムがアクティビティを破棄できないという事実に起因しています。Android は Windows Phone や iOS ではありません。アプリケーションを強制終了するのではなく、いつ強制終了する必要があるかをシステムに判断させます。

たとえば、Reto Meier の Android dev @ Google の記事を参照してください: Android アプリに終了ボタンを含める場合 (ヒント: 決して)

于 2013-01-22T07:25:02.333 に答える