我正在尝试启动启动画面几秒钟,然后关闭它并启动第二个屏幕。
出于某种原因,代码在显示启动页面之前执行“睡眠”,并且启动页面仅在几分之一秒内出现,第二个屏幕立即显示。换句话说,当我点击应用程序图标时,它会等待2秒钟,然后显示并立即隐藏启动并跳转到HomeScreen。
我尝试了许多不同的组合,包括invokeAndWait()
,回调和Splash类中的线程,但无济于事。
我也在SO上发过很多帖子。
请注意,我不希望启动页面打开下一个屏幕;启动页面(AppStart
)的启动器应启动下一个屏幕。
请提出解决方案。
代码:
public class AppStart extends UiApplication
{
public static void main(String[] args) {
AppStart app = new AppStart();
app.enterEventDispatcher();
}
public AppStart() {
final Splash splashscreen = new Splash();
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
UiApplication.getUiApplication().pushScreen(splashscreen);
}
});
Thread waitthread = new Thread()
{
public void run()
{
try {
sleep(2000);
} catch (InterruptedException e) {
}
finally
{
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
UiApplication.getUiApplication().popScreen(splashscreen);
}
});
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
UiApplication.getUiApplication().pushScreen(new HomeScreen());
}
});
}
}
};
waitthread.run();
}
}
飞溅
public class Splash extends MainScreen {
public Splash()
{
Bitmap bgImg = Bitmap.getBitmapResource("480x320-SplashScreen.png");
Background bg = BackgroundFactory.createBitmapBackground(bgImg);
getMainManager().setBackground(bg);
}
}
答案 0 :(得分:3)
waitthread.run();
这就是问题所在。你没有开始新的线程,而是通过callyng睡眠它的方法来占用主线程。用这一行替换该行:
waitthread.start();
它应该有用。