android – 返回前台时应用程序冻结(Cordova 3 jquery mobile)

我们正在使用最新的AC(3.1.0)jquery mobile开发移动应用程序.该应用程序在谷歌游戏商店(https://play.google.com/store/apps/details?id=com.mventix.sellPro&hl=bg)现场直播,但我们有一个奇怪的问题.当应用程序启动时,没有打开不同视图和做一些事情的问题.但是当应用程序在后台运行一段时间(在10分钟到2-3小时之间)并且在恢复应用程序之后,用户界面被冻结并且没有任何响应也没有在logcat中打印错误.我们必须终止应用程序并重新启动它以使其正常工作.我们也在使用WEBSQL和LocalStorage,我们也在app / cache /中存储了一些文件,因为应用程序需要在没有互联网的情况下运行.我们正在使用很多cordova中的插件.
我在apache cordova bugtracker中发现了类似的bug,但它们适用于较旧的cordova版本.

similar bug

在这两个地方问题看起来都很相似,但据我所知,它们是在最新的cordova版本中修复的.

这个问题代表了(android 4.0.3,4.1.2,4.2.2),这些设备是LG硝基,HP板岩7三星GT2 7inch三星sIII和s IV.

按照这个顺序,我阅读并搜索了所有围绕phonegap论坛和stackoverflow,但我没有尝试解决我的问题.
到目前为止,我们尝试过:

@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.loadUrl("about:blank");
    super.onDestroy();
}

此外,我们尝试此修复程序以使更大的超时
    @覆盖
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

    super.init();
    super.setIntegerProperty("loadUrlTimeoutValue", 60000);
    super.setBooleanProperty("keepRunning", false);
    super.loadUrl(Config.getStartUrl());

我们的config.xml如下所示:

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.helloCordova" version="2.0.0" xmlns="http://www.w3.org/ns/widgets">
    <name>SellPro</name>
    <description>
        SellPro
    </description>
    <author email="support@vertinity.com" href="http://www.vertinity.com">
        Vertinity LTD Team
    </author>
    <content src="index.html" />
    <feature name="App">
        <param name="android-package" value="org.apache.cordova.App" />
    </feature>
    <access origin="*" />
    <preference name="useBrowserHistory" value="false" />
    <preference name="exit-on-suspend" value="true" />
    <preference name="fullscreen" value="false" />
    <preference name="webviewbounce" value="true" />
    <preference name="splashscreen" value="splash" />
    <preference name="splashScreenDelay" value="10000" />
    <feature name="File">
        <param name="android-package" value="org.apache.cordova.core.FileUtils" />
    </feature>
    <feature name="FileTransfer">
        <param name="android-package" value="org.apache.cordova.core.FileTransfer" />
    </feature>
    <feature name="ExtractZipFilePlugin">
        <param name="android-package" value="org.apache.cordova.core.ExtractZipFilePlugin" />
    </feature>
    <feature name="PdfPanel">
        <param name="android-package" value="com.vertinity.pdfPanel.PdfPanel" />
    </feature>
    <feature name="SocialShare">
        <param name="android-package" value="com.vertinity.socialShare.SocialShare" />
    </feature>
    <feature name="Media">
        <param name="android-package" value="org.apache.cordova.core.AudioHandler" />
    </feature>
    <feature name="MXPlayer">
        <param name="android-package" value="com.vertinity.mxPlayer.MXPlayer" />
    </feature>
    <feature name="org.apache.cordova.core.ParsePlugin">
        <param name="android-package" value="org.apache.cordova.core.ParsePlugin" />
    </feature>
    <feature name="WebIntent">
        <param name="android-package" value="android.WebIntent" />
    </feature>
    <feature name="NetworkStatus">
        <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
    </feature>
    <feature name="SplashScreen">
        <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
    </feature>
</widget>

我们的andoidManifest看起来像这样:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:clearTaskOnLaunch="true" 
          android:hardwareAccelerated="true" 
          android:versionCode="4" 
          android:versionName="1.0.12"  
          package="com.mventix.sellPro" 
          xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" 
                      android:largeScreens="true" 
                      android:normalScreens="true" 
                      android:resizeable="true" 
                      android:smallScreens="true" 
                      android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-feature android:name="android.hardware.telephony" android:required="false" />
    <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="16" />
    <application android:debuggable="true"
                 android:hardwareAccelerated="true"
                 android:largeHeap="true" 
                 android:clearTaskOnLaunch="true" 
                 android:icon="@drawable/icon" 
                 android:label="@string/app_name" 
                 android:name=".sellProApplication" >
        <activity android:screenOrientation="portrait" 
                  android:windowSoftInputMode="adjustResize" 
                  android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
                  android:label="@string/app_name" 
                  android:name="sellPro" 
                  android:theme="@android:style/Theme.Black.NoTitleBar" 
                  android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.facebook.LoginActivity"
            android:label="@string/app_name" >
        </activity>
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
        <service android:name="com.parse.PushService" />
        <receiver android:name="com.parse.ParseBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

我希望有人可以帮助我,或者只是向我解释究竟发生了什么,这样我才能开始研究正确的方向.如果有人需要其他信息,我将提供所需的所有数据.

亲切的问候Tsvetan

解决方法:

我记得,一旦我有类似的问题,暂停我的应用程序.
不知怎的(我不知道为什么)window.device在从suspendmode返回时没有被正确地重新初始化.

所以我决定给phonegap更多的时间来获取它的window.device

这是一个smapleCode来了解我的意思:

一切都以init()开头;

<body onl oad="init()">
</body>

并且< head>中的ScriptBlock部分:

        <script type="text/javascript">

        function init(){
            console.log("init() called");
            var promiseDeviceReady = onDeviceReady();
            promiseDeviceReady.done(doPhoneGapStuff); //start PhoneGap action
        }   

        function onDeviceReady() {  
            var deferred = $.Deferred();
            var timeOut = 0;


            //set a 1sec timeOut when App was send to suspendMode. SomeTimes PhoneGap needs it's time...
            if (!window.device){ 
                console.log("PhoneGap seems not to be ready yet!!!")
                timeOut = 1000; 
            }

            setTimeout(function() {
                deferred.resolve();
            }, timeOut);

            return deferred.promise();
        }

    </script>

原文地址:https://codeday.me/bug/20190703/1367515.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


公司前端界面用的是vue,我要嵌入到Android中生成App第一步:安装nodenode安装:直接进入官网https:/odejs.org/zh-cn/,下载最新版本安装。安装之后在命令行中使用”node-v”检查安装是否成功。npm安装:由于新版的nodejs已经集成了npm,所以node安装时npm也一并安装好了。同样可以通过输
Q:我用cordova开发项目,想在app内跳转外部链接,安装了cordova-plugin-inappbrowser后确实可以跳转,但是跳转的页面有个按钮,原本点击会下载app,现在点击后毫无反应,求大神解惑。A:已经找到解决办法了,把cordova.InAppBrowser.open的打开网页方式改为“_system”即可,即用手机默认浏览器打
我正在使用https://github.com/arnesson/cordova-plugin-firebase/在基于离子的应用上接收GoogleFirebase消息.设置证书后,安装插件并设置Firebase帐户我能够通过Firebase控制台接收通知(在Android和ios设备上).但是,当我通过FirebaseAPI(https://firebase.google.com/docs/clo
一、Cordova的基础点在混合式应用中,我们通过现有的Cordova插件,可以轻松的在H5上调用手机native的功能。现有的Cordova插件能满足平时大部分的开发需求,然而,有时候找不到合适的插件、或对找到的插件有不满意的地方,那就要动手去做或改写一个插件,这时候就要了解一些Cordova插件的
cordova自定义插件注意:存放自定义cordova插件目录不能有空格可能会报错cordova的安装下载node.js,安装完成后你可以在命令行中使用node和npm.安装cordova使用node.js的npm工具。打开控制台输入npminstall-gcordova-g是全局安装cordova。安装完成后就可以在命令行
一、问题VueAPP中有一个文件下载功能,用了各种方法来实现下载功能,app都没有反应。JS实现html页面点击下载文件这个博客里面几乎包含了我试过的大部分方法,发现PC端没问题,手机不可以。二、经过这些方法PC端没问题,安卓就不行,问了一个接触过安卓的后台小伙伴,说是
helloindex.html1<!DOCTYPEhtml>2<html>3<head>4<metacharset="utf-8">5<title>我的App<itle>6<metaname="format-detection"content="telephone=no&q
1.plugman安装npminstall-gplugman如果提示permissiondenied需要加sudosudonpminstall-gplugman2.创建插件sudoplugmancreate--name插件名--plugin_id插件id--plugin_version0.0.13创建package.json文件cd上面床架的插件文件夹下,plugmancreate
最近学习了cordova插件,记录一下大概的过程,仅供参考。前期的配置就不记录了网上好多。在简书上从新写了一个更详细的cordova插件教程,有需要的可以点这里进去看看。第一步创建一个cordova项目输入命令:cordovacreate项目名包名例子:cordovacreatedemocom.zc.demo项目的大概目
我知道这个链接:https://cordova.apache.org/docs/en/latesteference/cordova-plugin-file/#where-to-store-files但我想将文件保存在Downloads目录中.这可以使用Ionic在任何路径中保存文件吗?如果是这样,请分享这个例子.这是代码:downloadImage(image){this.platform.ready(
我想在我的HTML5PhonegapJavaScript应用程序中添加状态栏通知.可能吗?解决方法:Ourteam已发布用于phonegapAndroid状态栏通知的插件.https://github.com/phonegap/phonegap-plugins/commits/master/Android/StatusBarNotification
使用cordova-plugin-geoloaction插件我正在检索用户在其移动设备上的位置.我的onSuccess()函数返回纬度和经度,现在我想在应用程序中显示相应的地址:<scripttype="text/javascript"charset="utf-8">//WaitfordeviceAPIlibrariestoload//document.addEventListe
我正在检查Android的PhoneGapAPI,并正在尝试相机示例应用程序示例并安装在我的Android手机(2.1GalaxyS)中.然而,在运行应用程序并拍照后,未检索到图像.根据我在代码中的理解,拍摄照片后,图像将显示在按钮下方60×60.我尝试在警报消息中打印出base64值,但我也没有得到任何响应(也
我刚刚在Eclipse中创建了一个包含所有phonegap和cordova文件的Android项目.但是,我没有这样的目录,因此没有config.xml.根据ApacheCordova文档,它应该位于:app/res/xml/config.xml.对于/res目录,我的文件夹结构如下:es/drawable-hdpies/drawable-ldpies/drawable-
我正试图在phonegap中设置一个新的开发环境.以下是我的路径变量设置在Windows中的外观:C:\Users\Mrinal\AppData\Roaming\npm;C:\android\development\sdk\platform-tools;C:\android\development\sdk\tools;C:\ProgramFiles\Java\jdk1.7.0_17\bin;C:\ant\bin现在在第三行
我正在将Worklight用于Android应用程序,当我尝试添加启动画面时publicclassMyAppextendsWLDroidGap{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);super.setIntegerProperty("splashscreen",
我正在创建一个可在所有3个移动平台(Android,iOSa和WindowsMobile8)上运行的HTML5移动应用程序.我正在使用javascript进行本地化(https://github.com/eligrey/l10n.js/#readme).该应用程序在浏览器上正常工作.但是当我在移动模拟器上部署它时,本地化不起作用.我认为问题是java
我有通过cordova成功构建的代码.但是,当我尝试模拟它时,我收到此错误“错误:cmd:命令失败,退出代码为1”.关于如何解决这个问题的任何想法?Hereismyoutputfromattemptingtoemulatethecode解决方法:我有同样的问题.看起来你没有任何AVD在运行.我不认为ionic的教程指定你需要这
我尝试添加各种标签并尝试添加相对路径:’//’这些是我尝试过的各种元标记<metahttp-equiv="Content-Security-Policy"content="default-src'self'"><metahttp-equiv="Content-Security-Policy"content="style-src'self''u
我正在Cordova/PhoneGap中编写一个应用程序,它试图使用Dropbox.js从Dropbox获取文件.Cordova版本为3.0.1,Dropbox.js版本为0.10.0.我的Javascript在桌面浏览器上工作得很好:varclient=newDropbox.Client({key:"<mykey>",secret:"<mysecret>"});client.authenticate