3

アプリケーションの基礎となるアクティビティが1つあります。ここに問題があります。

  • と呼ばれるアクティビティインスタンスを作成しますInstance1
  • その後、ホームメニューに戻ると、アクティビティがバックグラウンドに送信されます。onPauseonStop呼ばれInstance1ます。
  • Gmail次に、メールの添付ファイルに移動して開きます。
  • これにより、アクティビティ'Instance2`の新しいインスタンスが作成されます(インスタンスが何であるかをログに記録するため、これを知っています)。私の活動の中で今していることはすべて、この新しいインスタンスの中にあります。
  • 次に、Gmailに移動すると、onDestroyが呼び出されます。Instance2アイコンをタッチしてアプリケーションを開くと、元のアプリケーションInstance1 onRestartが呼び出されます。

これが私の内部のインテントフィルターですmanifest.xml

<intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" />
                <data android:pathPattern=".*\\.dog" />
</intent-filter>

マニフェストファイルのApplicationsタグにも以下を追加しましたが、効果がありません。

android:launchMode="singleTask"

質問

インスタンスが実行されていることに気づかず、それを開くことができないのはなぜですか?

添加

singleInstanceを使用して、Activityタグに移動しました。しかし、今ではメールの添付ファイルデータを取得できませんか?以前は以下を使用していました。

Intent intent = getIntent();

        if (intent != null) {
            Log.d("MainActivity","Intent not null");
            Uri u = intent.getData();
            if (u != null) {
                Log.d("MainActivity","URI not null");
4

1 に答える 1

1

launchModeタグは<activity>、アプリケーション要素ではなく、要素の一部です。

既存のアクティビティを再利用するには、singleTopを使用する必要があります。

于 2012-12-04T12:55:50.400 に答える