10

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

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

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

我无法在我的索尼爱立信 XPERIA 上使用 Android 2.3.4 重现该错误,客户端在摩托罗拉 Defy 和另一部手机上遇到了这种行为(我将在我添加另一部手机和操作系统版本的参考后立即抓住他们)。

应用程序的初始化过程是这样声明的:

window.addEventListener('load', function(){
      document.addEventListener('deviceready', _onDeviceReady, false);
}, false);

可以通过将流程附加到其他事件来解决这个问题(尽管我对此表示怀疑,该应用程序似乎真的从一开始就重新启动了)?

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>

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

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

4

5 回答 5

7

您希望将以下内容添加到 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">

查看此页面以获取有关启动模式的更多信息:http: //www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode

于 2013-05-09T13:19:30.463 回答
3

嘿,卢卡斯,你有:

android:configChanges="orientation|keyboardHidden"

在您的 AndroidManifest.xml 中的活动标签中。

正如您所说,可能发生的另一件事是您客户的手机内存不足,操作系统正在杀死您的应用程序以释放内存。

于 2012-04-12T14:31:16.053 回答
2

这实际上是 Android 设计的,操作系统控制应用程序的生命周期。您可以在此处找到更多信息

于 2012-04-12T11:24:46.093 回答
0

试试看...

在清单文件的活动标记中使用 android:launchMode="singleInstance"。

于 2014-05-08T05:45:40.550 回答
-1

我有一个三星 Galaxy Note II,我遇到了同样的问题。因此,我修改了 AndroidManifest.xml,现在它可以在三星和 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" />
于 2013-03-06T20:57:24.023 回答