此問題已在類似帖子中解決,但是,我的情況有點不同。我只有一個活動,和多個片段。我不是深入鏈接到特定的片段,我啓動我的一個活動,然後重定向到不同的片段。我遇到的問題是,在單擊深層鏈接時以及在防止應用程序的多個實例打開時,應用程序的多個實例處於打開狀態,因此我失去了深層鏈接意圖中的數據。深層鏈接導致應用程序的多個實例打開
我已經阻止了多個實例的幾種方法。一個是被添加singleTop到我的清單
android:launchMode="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
我的意思是應用程序的原始實例被關閉。抱歉錯字。第二種方式是關閉應用程序的新實例。但是有兩種方法都有問題,因爲應用程序的新實例沒有來自我的靜態對象的數據。相反,如果應用程序的新實例被關閉,則原始實例不具有來自推送通知的數據。 – portfoliobuilder
您的程序隨時可以隨時移除(隨着用戶從您的應用程序切換到其他應用程序,它會一直髮生在低端設備上)。無論如何你都需要能夠從中恢復。 – ianhanniballake