BlackBerry - 无法将正在运行的应用程序置于前台
Posted
技术标签:
【中文标题】BlackBerry - 无法将正在运行的应用程序置于前台【英文标题】:BlackBerry - Can't foreground a running application 【发布时间】:2011-12-16 16:13:20 【问题描述】:我有一个设置为在启动时自动运行的 UI 应用程序,它会产生几个线程在后台执行一些工作。它有一个屏幕,显示有关后台线程正在执行的工作的信息。
class AppName extends UiApplication implements SystemListener2
private static AppName app;
public static void main(String[] args)
app = new AppName();
if (ApplicationManager.getApplicationManager().inStartup())
app.addSystemListener(app);
else
app.initializeLater();
app.enterEventDispatcher();
public AppName()
pushScreen(new InfoScreen());
requestBackground();
private void initialize()
// Spawns some threads doing work in the background
private void initializeLater()
invokeLater(new Runnable()
public void run()
initialize();
);
public void powerUp()
removeSystemListener(this);
initialize();
当我在模拟器中运行应用程序时,它运行良好。启动时一切都会运行,然后当我单击图标时,屏幕会被前景化并显示。这是模拟器的输出:
3:20:26.612: AM: Starting AppName
3:20:26.612: AM: AppName already running
3:20:26.612: AM: Foreground is requested: AppName(304)
3:20:26.628: AM: Foreground is set: AppName(304)
但是,在设备上,屏幕从不显示。这是设备调试器的输出:
[0.0] Starting AppName
[0.0] AppName already running
如您所见,从未发出前台请求。我通过重写 UiApplication.activate() 方法并输入 System.out 消息来确认它是否被调用但没有被调用。
有人知道为什么会这样吗?
【问题讨论】:
你在哪里调用 requestForeground? 【参考方案1】:试试这个
UiApplication.getUiApplication().invokeAndWait(new Runnable()
public void run()
UiApplication.getUiApplication().requestForeground();
);
【讨论】:
谢谢,但最终成为设备本身的问题。代码很好。以上是关于BlackBerry - 无法将正在运行的应用程序置于前台的主要内容,如果未能解决你的问题,请参考以下文章
iPhone、Android 和 Blackberry 的移动开发