Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除Blackberry java中弹出屏幕的所有回调_Blackberry_Java Me_Screen - Fatal编程技术网

如何删除Blackberry java中弹出屏幕的所有回调

如何删除Blackberry java中弹出屏幕的所有回调,blackberry,java-me,screen,Blackberry,Java Me,Screen,我有一个blackberry应用程序,我想在发送服务器请求时显示一个“请等待”模式屏幕(即全屏推送模式屏幕),如果用户点击设备后退按钮,则弹出模式屏幕和当前活动屏幕。这很好 我的问题是:我在活动屏幕中对服务器请求使用了回调。但是回调即使在屏幕弹出后也会执行 调用popScreen()时到底发生了什么?如果在服务器请求发生时用户按下后退按钮,如何删除所有回调并刷新屏幕 提前感谢当然,这个问题有几种解决方案。我猜服务器请求是异步发送的 我认为最简单的方法是设置一个标志,当回调 已触发检查用户是否取

我有一个blackberry应用程序,我想在发送服务器请求时显示一个“请等待”模式屏幕(即全屏推送模式屏幕),如果用户点击设备后退按钮,则弹出模式屏幕和当前活动屏幕。这很好

我的问题是:我在活动屏幕中对服务器请求使用了回调。但是回调即使在屏幕弹出后也会执行

调用popScreen()时到底发生了什么?如果在服务器请求发生时用户按下后退按钮,如何删除所有回调并刷新屏幕


提前感谢

当然,这个问题有几种解决方案。我猜服务器请求是异步发送的

  • 我认为最简单的方法是设置一个标志,当回调 已触发检查用户是否取消了操作(按 返回按钮)

  • 另一个解决方案,也许不是很好,就是检查 加载屏幕仍在显示堆栈中

  • 我认为一个合适的解决办法是有一堆 已取消http操作,因此您可以随时停止请求。然后 如果已向服务器发送请求,则在调用 回调您可以检查操作是否已取消。 否则,您只需避免将请求发送到服务器

调用popScreen时,显示堆栈顶部的屏幕(前景中的屏幕)将从堆栈中移除,并刷新屏幕(触发绘制事件)以反映更改。确保在UiThread上执行Screen.pop():

UiApplication.getUiApplication().invokeLater(runnable)
在您的场景中,回调是如何处理的?是您随请求一起传递的委托,还是您注册的侦听器

当我提到代表时,我指的是如下内容:

Server.sendRequest(request, objectWithCallbacks)
将相应地调用objectWithCallbacks(并且只有objectWithCallbacks)的回调。另一方面,侦听器可能类似于:

Server.addListener(objectWithCallbacks, request)
Server.sendRequest(request);
这样,所有侦听“eventName”的对象都会相应地触发回调

据我所知,您的回调将始终执行,但在回调本身中,您可以检查屏幕当前是否显示

if( this.isDisplayed() ) {
    // Do the magic
}else{
    // Do nothing
}

祝您好运

在回调时停止调用popscreen时启动的所有线程,它将从堆栈中删除屏幕。@Asha Soman您想用从服务器获得的值更新屏幕吗?我不明白您所说的委托和侦听器是什么意思。我想问您,为什么对弹出的屏幕执行回调?也许我误解了这个问题。我可以得到更多关于服务器请求是如何在您所指的回调中完成的信息吗?也许是一些代码…我的回调是我自己创建的接口,在通信完成时触发它的方法。我添加了一个关于侦听器和委托的解释。我想我明白了。加载屏幕本身是接收回调的对象还是另一个对象。回调在活动屏幕中使用。从该屏幕发送请求并按下加载屏幕(半透明屏幕)。按下后退按钮时,同时弹出加载屏幕和该活动屏幕。