2011-01-11 2 views
3

값을 검색하기 위해 웹 서비스에 액세스하는 JavaME 프로그램을 작성했으며 웹 서비스는 Tomcat 서버에서 실행됩니다.JavaME MIDlet이 변수를 지우지 않습니까?

나는 매우 이상한 문제에 직면하고있다. 프로그램을 실행할 때마다 예상대로 새로운 값을 다운로드하지만, 이전 배열 값을 저장하고 추가하는 것처럼 보이는 단위화된 배열에 프로그램을 추가하는 대신. 어쩌면 코드가 더 잘 설명 할 수 있습니다.

public class StockQuery extends MIDlet implements CommandListener 
{ 
    String[] newResults = null; 
    int i = 0; 
    String stockSym = null; 
    getDataService service = null; 
    ..... 

는 미들 릿은 다음 형태를 호출

I 먼저 그들을 통해 반복 할 때 사용할 검색된 값과 작은 int 값을 저장하는 문자열 배열을 만들고 또한 서비스 및 스터브의 저장을 만들 startApp() 메서드가 실행될 때 입력에 텍스트 상자에 값을 입력 한 다음 send 명령을 눌러 서버에 값을 보내면이 서버는 값의 배열 (정확하게는 18)을 반환합니다. 이를 구현하려면 commandAction() 메서드를 호출하십시오.

public void commandAction(Command c, Displayable d) 
{ 
    else if(c == cmdSend) 
    { 
     stockSym = getSym.getString(); 
     service = new getDataService_Stub(); 
     try 
     { 
      newResults = service.getStock(stockSym); 
      for(i=0; i<newResults.length; i++) 
      { 
       System.out.println("Data " + i + " - " + newResults[i]); 
      } 
     } 
     catch (RemoteException ex) 
     { 
      ex.printStackTrace(); 
     } 

이제 프로그램은 문자열 배열과 루프를 통해 18 개의 값을 다운로드하여 배치해야합니다. 그것은 그렇게하지만 실제로 배열을 이해할 수없는 이유 때문에 배열에서 이전 값을 플러시하지 않습니다.

예를 들어 루프를 처음 실행할 때 프로그램은 18 개의 값을 루프하고 인쇄했지만 두 번째로 이전 실행에서 처음 18 개 값을 인쇄 한 다음 방금 다운로드 한 18 개 값을 다시 인쇄했습니다 . IDE를 닫고 내 PC를 다시 시작한 다음 Netbeans 캐시 폴더를 삭제하고 프로그램이 시작될 때마다 0으로 선언했지만 어떤 이유로 문자열 배열과 루프 값에 값을 저장합니다.

I 프로그램의 제 15 실행에 지금있는 프로그램의 출력은 다음과 같습니다 변수가 해제되지 않는 이유

Data 267 - 34092040 
Data 268 - 22.73 - 31.58 
Data 269 - NasdaqNM 
Data 270 - 1.95 

는 사람이 설명 할 수 있습니까?

+1

이 문제는 Blackberry에서 보시겠습니까? 아니면 Wireless Toolkit 에뮬레이터로 테스팅하는 중입니까? 그렇다면 JVM이 MIDlet 시작 사이에서 계속 실행되어 정적 변수가 이전 값을 유지하게되면 앱 개발자를 놀라게 할 수 있습니다. 여기에 한 가지 예가 설명되어 있습니다. [정적 변수는 이전 출시의 값을 유지합니다.] (http://stackoverflow.com/questions/5258818/static-variables-keep-values-from-previous-launch/8148734#8148734) – gnat

답변

0

문제는 getDataService_Stub.getStock 메소드에있는 것 같습니다. 이전 서버 데이터를 저장하기 위해 로컬 장치 지속성을 사용 중일 수 있습니다. 그것을보십시오.

관련 문제