从您的问题看来,您希望setCurrent
以某种方式“强制”设备立即显示您的屏幕,或者仅在屏幕可见后才返回。
事实并非如此,正如Display.setCurrent的 API 文档中明确解释的那样:
请求Displayable
在显示器上显示不同的对象。更改通常不会立即生效。它可能会延迟,以便在事件传递方法调用之间发生,尽管不能保证在调用下一个事件传递方法之前发生。该setCurrent
方法立即返回,无需等待更改发生...
...如果应用程序在后台,传递一个非空引用setCurrent
可能会被应用程序管理软件解释为应用程序请求被带到前台的请求...这些只是请求,并且有不要求应用程序管理软件及时遵守这些要求,如果有的话......
考虑重新设计您的 MIDlet 以适应指定的行为。
如果myCanvas
是 Canvas 的一个实例,则可以使用showNotify()事件。
对于通用Displayable
屏幕,isShown()方法检查它是否在显示器上实际可见。
有时让用户明确地确认从后台返回是有意义的,比如
display.setCurrent(new Alert("back to foreground", "dismiss to continue...",
null, AlertType.INFO), myCanvas);