2012-05-24 1 views
0

OS 5.0을 사용하여 프로그램을 만들었습니다. 8520 곡선의 에뮬레이터와 장치에서 잘 작동합니다.7.0이 아닌 OS 5.0에서 작동하는 응용 프로그램

이제이 응용 프로그램을 7.0 버전과 함께 사용하려고합니다.이 응용 프로그램은 장치에 HttpConnection을 겹쳐서 쌓습니다. 내 프로그램 5.0 버전을 사용하여 9900 에뮬레이터에서 제대로 작동합니다. 2 가지 버전간에 차이점이 있습니까? 내 스레드에서 연결을 만드는 데 사용하는 코드를 넣고 있습니다. 나는이 문제에 대한 답을 어디서 찾을 수 있는지 모른다.

try { 
    mTimer = new Timer(); 
    mTimer.schedule(new CountDown(), 60000); 
    UiApplication.getUiApplication().invokeLater(new Runnable() { 
     public void run() { 
      popup = new MyPopup("Cargando Incidentes..."); 
      UiApplication.getUiApplication().pushModalScreen(popup); 
     } 
    }); 

    conn = (HttpConnection) Connector.open(URL); 

    InputStream contentIn = conn.openInputStream(); 
    byte[] data = new byte[400]; 
    int length = 0; 
    StringBuffer raw = new StringBuffer(); 
    while (-1 != (length = contentIn.read(data))) { 
     raw.append(new String(data, 0, length)); 
     str = raw.toString(); 
    } 

    UiApplication.getUiApplication().invokeLater(new Runnable() { 
     public void run() { 
      try { 
       conn.close(); 
       UiApplication.getUiApplication().invokeLater(new Runnable() { 
        public void run() { 
         try { 
          String datos[] = mainScreen.split(str, "ENDOFPAGE"); 
          datos[0] = datos[0].substring(2, datos[0].length()); 
          mainScreen.vecRegistro = mainScreen.split(datos[0],"$"); 
          mainScreen.insertoEnBd(); 
          mainScreen.insertoEnTablaDatosBD(_act); 

          UiApplication.getUiApplication().popScreen(popup); 
         } catch (Exception e) { 
          e.printStackTrace(); 
          mainScreen.add(new RichTextField("Error ThreadIncidentes.run: "+ e.toString())); 
         } 
        } 
       }); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    return; 
} catch (Exception e) { 
} 

private class CountDown extends TimerTask { 
    public void run() { 
     if (str.length() < 50){ 
      UiApplication.getUiApplication().invokeLater(new Runnable() { 
       public void run() { 
        UiApplication.getUiApplication().popScreen(popup); 
        Dialog.alert("Error en la conexion"); 
        System.exit(0); 

        clsThreadIncidentes.currentThread().interrupt(); 
       } 
      }); 
      return; 
     } 
    } 
} 

답변

2

Connection.open을 사용하지 마십시오. 이것은 연결을 여는 기존 방식이며 대개 BIS, MDS, Wi-Fi 또는 TCP 직접 연결을 통해 연결음에 따라 접미어를 처리하는 많은 코드가 필요합니다.

5.0 이상에서는 새로운 네트워킹 API를 사용할 수 있습니다. 여기에서 참조 할 핵심 클래스는 ConnectionFactory입니다.