この問題は同様の記事で解決されていますが、私の状況は少し異なります。私は1つだけの活動と複数の断片を持っています。私は特定の断片に逆行しません、私は私の1つの活動を開始し、別の断片にリダイレクトしています。私が実行している問題は、深いリンクをクリックするとアプリケーションの複数のインスタンスが開き、アプリケーションの複数のインスタンスが開かないようにするときに、深いリンクのためにデータを失うことです。ディープリンクにより、複数のアプリケーションインスタンスが開かれています
私は複数のインスタンスをいくつかの方法で防ぐことができました。一つは、私のマニフェスト
android:launchMode="singleTop"
にsingleTopを追加することであったこれは、私の元のアプリのインスタンスから静的なデータが失われ、しかし、複数のインスタンスを防ぐことができます。私もこのコードでは、同様
// finishes activity if its not the root activity
if (!FrameworkUtils.checkIfNull(getIntent().getExtras())) {
if (!isTaskRoot()) {
finish();
}
}
以下の方法を試してみましたが、もう一つの方法は、私はアプリの元のインスタンスを維持するが、私はディープリンクから必要な目的のデータがなくなっているので、アプリの新しいインスタンス(私が必要とする)閉鎖される。
どのように私はどのように私はアプリの元のインスタンスを削除し、新しいインスタンスを維持することができ、起動するために追加の活動を作成することと、その後
Intent intent = getIntent();
String intentUrl = intent.getDataString();
Intent newIntent = new Intent(this, MainActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
newIntent.putExtra("intentUrl",intentUrl);
newIntent.setAction(Long.toString(System.currentTimeMillis()));
startActivity(newIntent);
finish();
かというようなことをやってなくて、この状況を解決することができますユーザーがディープリンクをクリックした後のアプリですか?事前に感謝します
「私が必要とするアプリケーションの新しいインスタンスが閉じられる」とはどういう意味ですか?これは 'singleTop'のことではありません。 [onNewIntent](https://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent))をどこで上書きしますか? – ianhanniballake
私は、アプリケーションの元のインスタンスが閉じられることを意味します。申し訳ありませんがタイプミス。アプリの新しいインスタンスが2番目の方法で閉じられます。しかし、アプリの新しいインスタンスは私の静的オブジェクトからのデータを持っていないので、いずれかの方法で問題があります。逆に、アプリケーションの新しいインスタンスが閉じられると、元のインスタンスにはプッシュ通知のデータがありません。 – portfoliobuilder
あなたのプロセスはいつでもいつでも削除することができます(ユーザーがあなたのアプリから他のアプリに切り替えると、ローエンドのデバイスで常に行われます)。いずれにしてもそれから回復できる必要があります。 – ianhanniballake