Phonegap Android应用程序重新启动而不是恢复,虽然它没有被操作系统杀死

Luc*_*s T 10 android cordova

我创建了一个Phonegap 1.5/Android应用程序.

我的客户报告说,当他使用"主页"按钮离开应用程序,然后使用应用程序图标重新启动应用程序时,应用程序从一开始就重新启动而不是恢复.但是,当他按住主页按钮时,应用程序会出现在最近的应用程序中,当他通过此菜单访问应用程序时,应用程序将以预期的方式恢复.

我认为这可能与由于内存不足而被操作系统自动关闭的应用程序相关联,但如果是这种情况,则应用程序在最近的应用程序中单击时不应恢复.

我无法使用Android 2.3.4重现我的索尼爱立信XPERIA上的错误,客户端在摩托罗拉Defy和另一部手机上遇到过这种情况(我会尽快添加其他手机和操作系统版本的参考抓住他们).

应用程序的初始化过程以这种方式声明:

window.addEventListener('load', function(){
      document.addEventListener('deviceready', _onDeviceReady, false);
}, false);
Run Code Online (Sandbox Code Playgroud)

可以通过将进程附加到其他事件来解决这个问题(尽管我怀疑它,应用程序似乎从一开始就重新启动)?

在Android Manifest中是否有声明可以阻止此行为?

这是我的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>
Run Code Online (Sandbox Code Playgroud)

这是某些Android手机/版本中的已知错误吗?

编辑:按住主页按钮不显示当前正在运行的应用程序,但显示最近的应用程序.为什么该菜单中的行为与主图标不同?

小智 7

您想将以下内容添加到AndroidManifest.xml中的activity标记中:

android:launchMode="singleTask"
Run Code Online (Sandbox Code Playgroud)

所以看起来应该是这样的:

<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">
Run Code Online (Sandbox Code Playgroud)

有关launchMode的更多信息,请查看此页面:http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode