如何防止 Cordova(3.2) 应用在 Android 后台被关闭?

4

大家好,这是我在StackOverflow上的第一个问题。

我正在使用Cordova 3.2和Telerik AppBuilder制作一个应用程序,但在Android上遇到了问题。

应用程序在后台运行时不应该被关闭。如果我将应用程序放入后台,并使用多任务菜单重新打开它,则应用程序可以正常工作。但是,如果我使用抽屉中的应用程序图标重新打开它,应用程序将会被重启。

这只发生在Android上(2.3、4.4,未尝试其他版本)。在iOS上没有问题。

我已经尝试通过谷歌来寻找解决方案,大部分结果都指向了这个:

<preference name="KeepRunning" value="true"/>

这是关于it技术的内容,其中提到了Cordova 3.2文档中记录的配置信息。下面是添加此配置后我的config.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<cordova>
    <access origin="*"/>

    <content src="index.html" />

    <log level="DEBUG"/>
    <preference name="KeepRunning" value="true"/>

    <!-- For projects that target Apache Cordova 3.0.0 only, this <feature></feature> block ensures that button events and App plugin-related functionality will work as expected. -->
    <feature name="App">
        <param name="android-package" value="org.apache.cordova.App" />
    </feature>
</cordova>

但是它没有任何帮助。

我已经听取了暂停和恢复事件。

document.addEventListener('deviceready', function() {
    document.addEventListener('pause', aFunction, false);
    document.addEventListener('resume', anotherFunction, false);
}, false);

我该如何防止应用程序在我使用应用程序图标重新打开时重新启动?谢谢 :)

2个回答

2
根据我的经验,在Android中,“keepRunning”没有任何效果。
在Android中,如果应用程序在后台运行,系统会强制停止它,但是您可以使用Start-Sticky标志创建一个服务。如果该服务被杀死,系统将重新启动它。
如果您想构建复杂的应用程序,请不要使用Cordova,而是使用原生Android!在Cordova中,总有很多事情无法完成,比如在后台工作。
更多信息:
请参考此链接:keepRunning PhoneGap/Cordova。这是我的问题,并包含了所有相关信息。

2

尝试在AndroidManifest.xml中的activity标签中添加

android:launchMode="singleInstance"

,该文件位于projectName/platforms/android/AndroidManifest.xml

这对我很有效 :)


3
这不是正确的答案,也许可以起作用,但这个标志的真正用途不是如此。请参考http://developer.android.com/guide/topics/manifest/activity-element.html。 - Cocorico
非常感谢!!!它起作用了!!! @Cocorico 感谢您的提醒,我想知道是否有更好的解决方案?谢谢。 - Kenny Tang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接