我创建了一个简单的应用程序,无论何时启动或接收电话,都会在浏览器字段内调用网址,但我继续获得例外:
无需保留事件锁即可访问UI引擎。
我在某处读到了我必须使用全球事件,但我不知道该怎么做。我已经在这方面苦苦挣扎了很长时间,并且非常感谢在拨打电话或拨打电话时没有收到错误的任何帮助。
我的代码:
public class BackgroundApp extends MainScreen implements PhoneListener {
BrowserField bf = new BrowserField();
public BackgroundApp(){
super();
Phone.addPhoneListener(this); //Phonelistener added to code
add(bf);
}
public void callIncoming(int callId) { //Method to listen for an incoming call and get the number
try {
bf.requestContent("http://www.yahoo.com/");
} catch (Exception me) {
me.printStackTrace();
}
}
public void callAdded(int arg0) {}
public void callAnswered(int callId) {}
public void callConferenceCallEstablished(int callId) {}
public void callConnected(int callId) {}
public void callDirectConnectConnected(int callId) {}
public void callDirectConnectDisconnected(int callId) {}
public void callDisconnected(int callId) {}
public void callEndedByUser(int callId) {}
public void callFailed(int callId, int reason) {}
public void callHeld(int callId) {}
public void callInitiated(int callid) {
try {
bf.requestContent("http://www.google.com/");
} catch (Exception me) {
me.printStackTrace();
}
}
public void callRemoved(int callId) {}
public void callResumed(int callId) {} /
public void callWaiting(int callid) {}
public void conferenceCallDisconnected(int callId) {}
public boolean onClose() {
System.exit(0);
return true;
}
}
答案 0 :(得分:0)
替换此
bf.requestContent( “东西”);
与
synchronized (UiApplication.getEventLock())
{
bf.requestContent("http://www.yahoo.com/");
}
或使用这样的:
synchronized (UiApplication.getEventLock())
{
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
bf.requestContent("http://www.yahoo.com/");
}
});
}