1

我创建了一个简单的应用程序,只要发起或接收到电话,它就会在浏览器字段中调用一个 url,但我不断收到异常:

UI 引擎在没有持有事件锁的情况下被访问。

我在某处读到我必须使用全局事件,但我不知道该怎么做。我在这方面已经苦苦挣扎了很长时间,如果在拨打电话或拨打电话时没有收到错误,我将不胜感激有关加载 url 的任何帮助。

我的代码:

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;
    }
}
4

1 回答 1

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/");
        }
    });
}
于 2012-10-23T04:27:07.607 回答