2016-12-09 38 views
2

使用startActivityForResult doesn't work properly in Android < 5.0 when using launchMode singleInstance or singleTask.不過,我使用的launchMode避免的WebView重裝:AndroidManifest屬性取決於API級別

android:alwaysRetainTaskState="true" 
android:documentLaunchMode="never" 
android:launchMode="singleInstance" 

我理解有周圍的第一個限制沒有可行的解決方法。

有沒有辦法讓這些Manifest屬性變量,取決於API版本?
(我會使用Android版> 5.0規定值的三個屬性,並且launchMode="standard"爲Android 5.0 <非常類似this,只是我不能找到一種方法來定義documentLaunchModelaunchMode;只有alwaysRetainTaskState因爲它是一個布爾)。

+0

我不明白你爲什麼需要使用特殊的啓動模式來避免重新加載WebView。你能詳細說明嗎? –

+0

嗨@DavidWasser,以及我不確定它是否與網站的完成方式有關,但每當應用程序轉到後臺時,當我恢復時,WebView將重新加載,所以對HTML所做的任何更改迷路了。我GOOGLE了,發現答案[這裏](http://stackoverflow.com/questions/28096779/how-to-save-webview-state-and-restore-it-in-android-lollipop)在我的情況下工作。 – RominaV

+0

聽起來很奇怪。一般來說,不應該使用特殊的啓動模式'singleInstance'和'singleTask'。他們通常會產生比解決問題更多的問題。但也許這是另一天的話題;-) –

回答

0

您可以創建<activity-alias>,它使用相同的底層Activity,但具有不同的清單參數(啓動模式等)。然後,您只需確保您啓動正確的Activity(原始版本或別名),具體取決於您運行的Android版本。

根據您的架構和問題的性質,這可能是也可能不是合適的解決方案。

+1

這是一個整潔的想法,我不知道。我會試試這個。 – RominaV

+0

我認爲這對你有用。 –

+0

嗯,它不適用於我的具體情況(在Android中使用singleInstance和startActivityForResult <5),但我認爲這是一個可能的解決方案,當有人正在尋找具有取決於條件的Activity屬性時。當然,我仍然試圖理清爲什麼WebView的行爲如此,但這是另一個問題:P – RominaV