日期:2014-05-20  浏览次数:20820 次

请问一个连接服务器时等待界面的问题
在做一个东西有许多时候需要连接到服务器,在连接等待时候我想显示一个动画和一个StringItem的画面,连接成功后自动转到另一个画面。主要是选择连接服务器后另起一个连接服务器的线程,然后添加动画。连接服务器的线程负责连接发送请求和接受回应。

timer   =   new   Timer();

ServiceInquiryThread   serviceInquiryThread   =   new   ServiceInquiryThread(this);
final   Thread   workerThread   =   new   Thread(serviceInquiryThread);
workerThread.start();

//   schedule   a   timer   for   animation   and   to   check   if   sync   complete
timer.schedule(new   TimerTask()   {
          public   void   run()   {
                      currentImage   =   (currentImage   +   1)   %   syncImages.length;
                      syncAnimation.setImage(syncImages[currentImage]);
                      if   (!isWorking)   {
                              timer.cancel();
                      }
          }
},   300,   300);


现在的问题是:

1。如果网络连接不成功,如服务器没开,会导致等待界面死掉,按cancel键退回也无效,动画也不卡住不动,我是在该等待界面的构造函数启动连接服务器的线程的(如上述代码)。。。照理说应该不会死的呀。。。

2。如果服务器没开,那为什么conn   =   (HttpConnection)Connector.open(URL);这样的语句catch不到任何异常,反而要到发送request,接受response的时候才catch到ConnectionNotFoundException异常呢???


求救!

------解决方案--------------------
帮顶
------解决方案--------------------
用新的一个线程去连接网络。然后用标记位来监控
------解决方案--------------------
```等待界面应该是等用户成功登陆才出现的 用户登陆失败或网络出现错误直接报个错

public void dResult(int result){
if(result==1013478509){
success=new successForm(this);//这个是成功登陆才出现的界面
display.setCurrent(success);

}else{
Alert alert=new Alert( "登陆失败 ");
alert.setType(AlertType.ERROR);
alert.setTimeout(2000);
display.setCurrent(alert,frm);

}
------解决方案--------------------
第一个问题:针对这个情况。你要处理链接的异常把链接的线程关闭。http是阻塞式的协议。
------解决方案--------------------
2.基于http的连接,发送出去的数据是缓冲起来的
只有当你获取ResponseCode或者open输入流的时候,才真正把数据发送出去