Blackberry App启动Webservice Null

时间:2013-01-26 00:24:30

标签: web-services blackberry blackberry-simulator

我的应用程序启动后,我有一个版本点击检查。 但是当模拟器加载它发送请求和所有那些东西时。我的应用程序启动后,它给版本命中值NULL但在我关闭应用程序并再次打开它后,它给出了正确的值。

1)我的问题是,为什么会出现这种情况,我该怎么做才启动该应用程序,并且版本检查在第一次尝试时给出了正确的值!

2)用户甚至没有执行应用程序为什么执行代码行?????

public MyScreen()  { 
    Bitmap bitmap = Bitmap.getBitmapResource("background.png");
    this.getMainManager().setBackground(
            BackgroundFactory.createBitmapBackground(bitmap)); 

    synchronized (Application.getEventLock()) 
    {
        UiApplication.getUiApplication().invokeLater(new Runnable() 
        {
            public void run() 
            {
                Status.show("Please Wait...", Bitmap.getPredefinedBitmap(Bitmap.INFORMATION), 1000);
                LoginScreen();
            }
        }); 
    }

现在它做的是它只显示背景屏幕,没有任何事情没有服务但是当我再次启动时它可以工作。有什么问题?感谢

1 个答案:

答案 0 :(得分:0)

如果您的MyScreen类实际上是Screen(通过继承),那么在这种情况下您无需同步事件锁。将在UI线程上调用Screen的构造函数,因此,只需将代码简化为:

public MyScreen()  { 
    Bitmap bitmap = Bitmap.getBitmapResource("background.png");
    this.getMainManager().setBackground(
            BackgroundFactory.createBitmapBackground(bitmap)); 

    UiApplication.getUiApplication().invokeLater(new Runnable() 
    {
        public void run() 
        {
            Status.show("Please Wait...", Bitmap.getPredefinedBitmap(Bitmap.INFORMATION), 1000);
            LoginScreen();
        }
    }); 

此外,你也可以摆脱invokeLater()电话,让你知道:

public MyScreen()  { 
    Bitmap bitmap = Bitmap.getBitmapResource("background.png");
    this.getMainManager().setBackground(
            BackgroundFactory.createBitmapBackground(bitmap)); 

    Status.show("Please Wait...", Bitmap.getPredefinedBitmap(Bitmap.INFORMATION), 1000);
    LoginScreen();

如果您只是想从后台线程安全地启动其invokeLater()方法中的代码,或者您希望排队它,那么通常会使用run() >构造函数完成后运行

但是,如果你已经准备好立即发生,而你只是使用那个电话来确保

 Status.show("Please Wait...", Bitmap.getPredefinedBitmap(Bitmap.INFORMATION), 1000);
 LoginScreen();

在UI线程上运行,然后没有必要,因为正如我所说,你已经在MyScreen构造函数中的UI线程上了。

但是,我也无法看到你在MyScreen构造函数末尾所做的事情,因此使用invokeLater()是合适的。

发布一些更多信息以回应我上面的评论,我会尝试提供更多帮助。