Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phonegap android应用程序后台cpu使用情况_Android_Cordova_Webview_Cpu Usage - Fatal编程技术网

Phonegap android应用程序后台cpu使用情况

Phonegap android应用程序后台cpu使用情况,android,cordova,webview,cpu-usage,Android,Cordova,Webview,Cpu Usage,我一直在为android做一个phonegap应用程序,但我被困在以下方面;当我将应用程序设置为后台并检查task magager时,应用程序仍然会消耗大量CPU(介于5%到15%之间)。我已经尝试删除代码的所有其他部分,但唯一阻止应用程序在后台进行CPU活动的是从代码中删除phonegap.js 我的印象是Phonegap在进入onPause时会停止javascript的执行,但我肯定错过了什么 我试过1.1.0、1.2.0和1.3.0,但都没有用。有趣的是,如果我使用phonegap启动两个

我一直在为android做一个phonegap应用程序,但我被困在以下方面;当我将应用程序设置为后台并检查task magager时,应用程序仍然会消耗大量CPU(介于5%到15%之间)。我已经尝试删除代码的所有其他部分,但唯一阻止应用程序在后台进行CPU活动的是从代码中删除phonegap.js

我的印象是Phonegap在进入onPause时会停止javascript的执行,但我肯定错过了什么

我试过1.1.0、1.2.0和1.3.0,但都没有用。有趣的是,如果我使用phonegap启动两个应用程序,它们的后台CPU使用情况似乎是一样的:一个上升,另一个上升,而且大多数情况下它们的使用率都精确到了一个百分点

有人知道该应用程序在CPU中仍在做什么和/或我如何发现吗


关于

当应用程序进入onPause时,js执行不会停止,它仅在应用程序关闭/终止时停止。

Cordova/PhoneGaps默认行为是让应用程序在后台运行,您可以通过在config.xml中添加“keepRunning”标记来更改:

保留修剪(布尔值,默认为true)- 确定Cordova是否将在后台继续运行


我注意到了同样的问题,尤其是在KitKat上。要解决此问题,在主活动(扩展DroidGap的活动)中,需要为WebView(即“appView”变量)调用onPause()方法

这将暂停与WebView相关的任何额外处理,这将显著降低CPU使用率:

@Override
protected void onPause()
{
    super.onPause();

    if (appView != null)
    {
        appView.onPause();
    }
}

@Override
protected void onResume()
{
    super.onResume();

    if (appView != null)
    {
        appView.onResume();
    }
}
PhoneGap使用的webbrowser控件是否有“暂停”更改?
@Override
protected void onPause()
{
    super.onPause();

    if (appView != null)
    {
        appView.onPause();
    }
}

@Override
protected void onResume()
{
    super.onResume();

    if (appView != null)
    {
        appView.onResume();
    }
}