无需保持事件锁即可访问UI引擎

时间:2012-10-22 15:08:21

标签: blackberry blackberry-jde

我创建了一个简单的应用程序,无论何时启动或接收电话,都会在浏览器字段内调用网址,但我继续获得例外:

  

无需保留事件锁即可访问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;
    }
}

1 个答案:

答案 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/");
        }
    });
}