黑莓回到屏幕检测

时间:2011-04-06 08:08:23

标签: blackberry screen

HI,我尝试在关闭另一个屏幕后检测到屏幕的重新连接,  从我的应用程序屏幕返回时应该工作,但也从设备相机返回  拍摄视频后。在覆盖方法onExposed()中,我能够检测到这种情况,  但它被调用了太多次,并且在显示对话框时也会调用(警报)。  有没有更好的方法来检测返回屏幕?

protected void onExposed() {
    // return to screen detected
    MainApp.addLog("onExposed");
}

3 个答案:

答案 0 :(得分:3)

  

之后从设备相机返回   拍摄视频

检查Application.activate()

  

系统调用此方法   把这个应用程序带到了   前景。默认情况下,此方法   什么也没做。将此方法重写为   执行额外处理时   被带到前台。

答案 1 :(得分:1)

如果覆盖Screen.onUiEngineAttached(boolean)方法,可以在屏幕附加或从UI分离时得到通知 - 基本上是当它从屏幕堆栈中推出或弹出时。

答案 2 :(得分:1)

我不得不做类似的事情,发现它很混乱,因为onExposed()可以在不确定的时间内多次调用。
为了检测屏幕A(主屏幕)中屏幕B的返回,我使用了屏幕B的onUiEngineAttached(false),它在弹出时被调用。
要使用回调:

public interface Ievent {
    public void backFromScreenBEvent();
}

屏幕A:

public class ScreenA extends MainScreen implements Ievent
{
    private ScreenB screenB;

    // constructor
    public ScreenA()
    {
        screenB = new ScreenB(this); // pass over Ievent
        // ....
    }

    public void backFromScreenBEvent()
    {
        // screen B is returning, do something
    }

屏幕B:

public final class ScreenB extends MainScreen
{
    private Ievent event;

    // constructor  
    public ScreenB(final Ievent event)
    {
        this.event = event;
        // ...
    }

    protected void onUiEngineAttached(boolean attached) {
        super.onUiEngineAttached(attached);
        if (!attached) {
            event.backFromScreenBEvent(); // notify event
        }
    }