我正在开发一个使用Phonegap Media插件播放音频的Phonegap应用程序.当我按下Android设备上的主页按钮或屏幕锁定按钮(KitKat 4.4)时,应用程序会进入后台,但音频不会因为暂停事件未被调用而关闭.只有当我恢复应用程序时才会运行暂停事件,并且我的关闭音频的代码最终会运行.简历事件也在此之后运行.
阅读关于暂停事件的Phonegap文档,有关于iOS Quirks的注释:
"在暂停处理程序中,对Cordova API或通过Objective-C的本机插件的任何调用都不起作用,以及任何交互式调用,例如警报或console.log().它们仅在应用程序恢复时处理,在下一个运行循环中."
这与我在Android设备上看到的非常相似,不过我想知道它是否是同一个问题.我真的需要修复或解决方法,因为当用户暂停应用程序时,这是一个无法关闭音频的showstopper.
这是我添加暂停事件监听器的代码:
document.addEventListener('deviceready', on_device_ready, false);
function on_device_ready()
{
document.addEventListener('pause', on_pause, false);
document.addEventListener('resume', on_resume, false);
}
Run Code Online (Sandbox Code Playgroud)
更新:我想我已经解决了,虽然我对解决方案不太满意.我已将Phonegap config.xml变量KeepRunning设置为false.我设置为true,现在它应该得到暂停事件.我觉得我应该能够阻止我的应用程序在后台运行,并且还可以预先运行一些暂停代码.
无论如何,这是我正在谈论的config.xml行:
<preference name="KeepRunning" value="true"/>
Run Code Online (Sandbox Code Playgroud) 我试图在ThreeJS中渲染一个拥有100,000多个非常简单的树木的大森林.创建许多单独的网格当然是不可能的.我当前的方法使用GeometryUtils.merge创建一个大的几何体,减少了绘制调用的数量,这非常有效.但接近100k,它陷入困境.我需要进一步提高性能,我觉得可能还有另外一两个技巧可以将性能提高10倍或更多.
代码如下,我还创建了一个JSFiddle来演示我目前的技术:http://jsfiddle.net/RLtNL/
//tree geometry (two intersecting y-perpendicular triangles)
var triangle = new THREE.Shape();
triangle.moveTo(5, 0);
triangle.lineTo(0, 12);
triangle.lineTo(-5, 0);
triangle.lineTo(5, 0);
var tree_geometry1 = new THREE.ShapeGeometry(triangle);
var matrix = new THREE.Matrix4();
var tree_geometry2 = new THREE.ShapeGeometry(triangle);
tree_geometry2.applyMatrix(matrix.makeRotationY(Math.PI / 2));
//tree material
var basic_material = new THREE.MeshBasicMaterial({color: 0x14190f});
basic_material.color = new THREE.Color(0x14190f);
basic_material.side = THREE.DoubleSide;
//merge into giant geometry for max efficiency
var forest_geometry = new THREE.Geometry();
var dummy = new THREE.Mesh();
for (var i = 0; i …Run Code Online (Sandbox Code Playgroud)