0

アクティビティでこの奇妙な問題に遭遇しました。この理由はどこかに文書化されていると確信していますが、これまでの検索努力は無駄でした.

問題を要約するonCreate()と、アクティビティが一時停止状態にあるときに my が呼び出されています。私が見たすべてのライフサイクルフロー図によると、これは決して起こらないはずです。

これが(私が思うに)私のマニフェストからの関連情報です:

   <activity
        android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:mimeType="text/xml" />
            <data android:mimeType="application/xml" />
            <data android:pathPattern=".*\\.xml" />
        </intent-filter>
    </activity>

アイコンをクリックして、通常の方法でアプリケーションを起動するとします。次にホームボタンを押しました。OSが呼び出していることがわかりますが、そうではありonPause()ませんonDestroy()。これは私が期待していることです。

この時点で xml ファイルを見つけ、自分のアプリケーションを使用してそれを開くと、onCreate()呼び出されていることがわかります - なぜこれが起こるのですか?

onCreate()かなり大きなメモリ キャッシュをフラグメントとして初期化し、その後の起動で findFragmentByTag が null を返すという事実がなければ、おそらく気付かなかったでしょう。これと私はOutOfMemory例外になります。

うまくいけば、誰かがこれに光を当てることができます。

ありがとう、

ルー

4

2 に答える 2

0

おそらくあなたの活動はXMLを読んでいますか?

その場合、XMLを開くたびに、まったく新しいアクティビティが作成されます。システムにアクティビティのインスタンスを1つだけ強制することができますが、これは、ユーザーが見ていたものがすべて失われることを意味します。

これがその設定のドキュメントです。launchMode

于 2012-12-18T15:54:22.910 に答える
0

[通常] ホーム ボタンを押しても、アクティビティは破棄されません。ユーザーが戻るか、OS がメモリを必要とするまで、メモリに残ります。

onCreate は、通常は初めて使用するために作成されるアクティビティとして呼び出されます。ただし、デバイスの向きが切り替わると、アクティビティが破棄されて再作成されます。これが onSaveInstanceState と onRestoreInstanceState が存在する理由です。作成は onStart または onResume とは異なります。OnStart は、初めて開始されるアクティビティをより明確に示します。OnResume は、現在フォーカスされている (最上位の) アクティビティであることをアクティビティに伝えています。

If at this point I find an xml file and use my application to open it I see onCreate() being called - why does this happen? 私はあなたがこれで何を意味するのか分かりませんか?onCreateを「見る」ためにXMLファイルをどのように使用していますか?

残りの質問については、onCreate、onStart、または onPause メソッドにあると思います。それらを投稿していただければ、ちょっと見てみることができます。

于 2012-12-18T15:49:27.803 に答える