规格: WebWorks 2.2,曲线9330 OS 6模拟器和设备
我们已经尝试了所有事情,但我无法解决这个问题。我的应用程序有一个主页面(index.html)和一个后台页面(listener.html),如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets"
xmlns:rim="http://www.blackberry.com/ns/widgets"
version="1.0.0.0" rim:header="SimpleSMS">
<name>SimpleSMS</name>
<description>Simple SMS</description>
<content src="index.html">
<rim:background src="listener.html" runOnStartup="true" />
</content>
<rim:navigation mode="focus" />
<access subdomains="false" uri="http://jsconsole.com"/>
<feature id="blackberry.message.sms" />
<feature id="blackberry.app" />
<feature id="blackberry.io.dir" />
<feature id="blackberry.io.file" />
<feature id="blackberry.utils" />
</widget>
listener.html如下所示:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="message_db2.js"></script>
<script type="text/javascript">
</script>
</head>
<body onload="initializeListener();">
</body>
</html>
initializeListener()函数如下:
function initializeListener() {
blackberry.message.sms.isListeningForMessage = true;
blackberry.message.sms.addReceiveListener(messageListener);
}
问题: 当我安装我的应用程序,并且侦听器开始运行时,我的应用程序可以毫无问题地接收文本消息。一旦我打开主应用程序,问题就开始了。如果我只是使用后退或结束按钮将应用程序最小化到后台,则接收的下一个短信会导致异常。如果我通过菜单关闭应用程序,那也不例外,但是监听器停止运行。我已经注释了messageListener中的所有代码,而index.html除了显示一些html之外什么也没做。几乎没有关于拥有背景页面的文档。有没有人有任何想法?提前谢谢。
答案 0 :(得分:0)
是不是网页会转到这些不同的页面并丢弃上一页中的所有内容? (就像您在浏览器中转到新页面时填写的表单一样)
也许你需要利用Application Events检查应用程序何时进入前景或背景;也许仔细检查isListeningForMessage?
我在考虑像
这样的东西function onFG()
{
if (!blackberry.message.sms.isListeningForMessage)
{
blackberry.message.sms.isListeningForMessage = true;
blackberry.message.sms.addReceiveListener(messageListener);
}
}
blackberry.app.event.onForeground(onFG);
如果您需要让代码区分它的运行位置,您还可以使用isForeground布尔值。