HI,我尝试在关闭另一个屏幕后检测到屏幕的重新连接, 从我的应用程序屏幕返回时应该工作,但也从设备相机返回 拍摄视频后。在覆盖方法onExposed()中,我能够检测到这种情况, 但它被调用了太多次,并且在显示对话框时也会调用(警报)。 有没有更好的方法来检测返回屏幕?
protected void onExposed() {
// return to screen detected
MainApp.addLog("onExposed");
}
答案 0 :(得分:3)
之后从设备相机返回 拍摄视频
系统调用此方法 把这个应用程序带到了 前景。默认情况下,此方法 什么也没做。将此方法重写为 执行额外处理时 被带到前台。
答案 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
}
}