Перезапуск Android-приложения Phonegap вместо возобновления, хотя он не был убит операционной системой
Я создал приложение Phonegap 1.5/Android.
Мой клиент сообщает, что, когда он покидает приложение с помощью кнопки "Домой", а затем перезапускает его с помощью значка приложения, приложение возобновляется с самого начала, а не возобновляется. Однако, когда он удерживает кнопку "домой", приложение появляется в последних приложениях, и когда он обращается к приложению через это меню, приложение возобновляется ожидаемым образом.
Я думал, что это может быть связано с тем, что приложение автоматически закрывается ОС из-за нехватки памяти, но если это так, приложение не должно возобновляться при нажатии в последних приложениях.
Я не смог воспроизвести ошибку на моем Sony Ericsson XPERIA с Android 2.3.4, клиент испытал это поведение на Motorola Defy и на другом телефоне (я добавлю ссылку на другой телефон и версии ОС как как только я их получу).
Процесс инициализации приложения объявляется следующим образом:
window.addEventListener('load', function(){
document.addEventListener('deviceready', _onDeviceReady, false);
}, false);
Можно ли это зафиксировать, связав процессы с другими событиями (хотя я сомневаюсь, что приложение действительно похоже на перезапуск с самого начала)?
Есть ли объявление в манифесте Android, чтобы предотвратить это поведение?
Вот подпись активности в моем AndroidManifest.xml
<application android:debuggable="true" android:icon="@drawable/appicon"
android:label="@string/app_name" >
<activity android:configChanges="orientation|keyboardHidden" android:name=".MyAppActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.phonegap.DroidGap" android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
</intent-filter>
</activity>
</application>
Это известная ошибка в некоторых телефонах Android/версии?
Изменить: нажатие кнопки "домой" не отображает текущие приложения, кроме последних приложений. Почему поведение в этом меню будет отличаться от основного значка?
Ответы
Ответ 1
Вы хотите добавить следующее в тег активности в AndroidManifest.xml:
android:launchMode="singleTask"
Итак, это должно выглядеть так:
<activity android:name="MyApp" android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:launchMode="singleTask">
Зайдите на эту страницу для получения дополнительной информации о launchMode: http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode
Ответ 2
Привет, Лукас:
android:configChanges="orientation|keyboardHidden"
в вашем теге активности в вашем AndroidManifest.xml.
Как вы сказали, другая вещь, которая может произойти, заключается в том, что ваш клиентский телефон работает на низкой памяти, а ОС убивает ваше приложение, чтобы освободить память.
Ответ 3
Это фактически по дизайну в Android, где ОС управляет жизненным циклом приложения. Вы можете найти дополнительную информацию здесь.
Ответ 4
Попробуйте...
Используйте android: launchMode = "singleInstance" в теге активности вашего файла манифеста.
Ответ 5
У меня есть Samsung Galaxy Note II, и я столкнулся с той же проблемой. Итак, я модифицировал AndroidManifest.xml, и теперь он работает как на Samsung, так и на HTC Thunderbolt.
Вот изменения:
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10"/>
<activity android:configChanges="orientation|keyboardHidden" />