2016-12-09 3 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" 

Я понимаю, что нет никакой возможности обойти вокруг первого ограничения.

Есть ли способ сделать эти переменные атрибутов манифеста, в зависимости от версии API?
(я бы использовал эти три атрибута с заданными значениями для Android> 5.0, и launchMode="standard" для Android < 5,0 Очень похоже на this, только то, что я не могу найти способ, чтобы определить documentLaunchMode и launchMode;. Только alwaysRetainTaskState, так как это bool).

+0

Я не понимаю, почему вам нужно использовать специальный режим запуска, чтобы избежать перезагрузки WebView. Можете ли вы уточнить? –

+0

Привет @DavidWasser, ну я не уверен, что это связано с тем, как сайт был сделан, но каждый раз, когда приложения переходят на задний план, когда я его возобновляю, WebView перезагружается, поэтому любые изменения, которые были сделаны с HTML потеряны. Я googled и обнаружил, что ответ [здесь] (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

Ну, это не сработало для моего конкретного случая (используя singleInstance и startActivityForResult в Android <5), но я думаю, что это возможное решение, когда кто-то ищет атрибуты активности в зависимости от состояния. Конечно, я все еще пытаюсь разобраться, почему WebView ведет себя так, но это еще одна проблема: P – RominaV

Смежные вопросы