Перезапуск 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.

Как вы сказали, другая вещь, которая может произойти, заключается в том, что ваш клиентский телефон работает на низкой памяти, а ОС убивает ваше приложение, чтобы освободить память.

Ответ 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" />