4

私が達成したいこと:

MainActivity は再利用する必要があります。つまり、もう一度実行したくはありませんが、同じアクティビティでonCreate()のみ実行したいのですonResume()が、奇妙な動作をしています。launchModeAndroidManifest の が無視されているようです。私が設定したもの ( singleTasksingleInstance) は、常にヒープの増加につながる新しいアクティビティを作成します。ホームボタンでアプリを終了して再度起動すると、新しいインスタンスが作成されるたびに。(.hprof リーク レポートで確認)。

これはどのように見えるかです:

<activity
    android:name="com.mydomain.myapp.pro.MainActivity"
    android:launchMode="singleTask"
    android:screenOrientation="nosensor" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

問題を切り分けようとしたところ、ホームを押すとアクティビティが強制終了される (onDestroy()が実行される) ことがわかりましたが、リーク レポートにはこれが示されています。アプリを起動するたびに、MainActivity インスタンスがどんどん増えていきますが、最後のインスタンスは破棄されると言われています。どうしてonDestroy()実行されたのでしょうが、アクティビティを開始したのと同じ数のインスタンスがあります (アプリの開始によって直接):

リークレポート

まったく実行されないのも興味深いことonDestroy()です。なぜなら、私は決して電話finish()をかけず、まだ多くのリソースを持っているからです。したがって、Android が Activity を kill する必要はありませんが、最初は上の問題の方が重要です。finish()MainActivity の on ですべてのフラグメントを kill しているからかもしれませんonPause()。そうしないと、フラグメントが漏れます。そして、おそらくMainActivityであるフラグメントのonDestroy()呼び出し。super.onDestroy()

4

1 に答える 1