2012-03-08 5 views
4

에 작은 응용 프로그램을 만들었습니다. J2ME으로 대상 링크가있는 브라우저가 열립니다.J2ME 응용 프로그램은 Nokia n81 및 Samsung f330 등에서 작동하지 않지만 BB 및 Nokia n97 등에서 작동합니다.

그러나 일부 모델에서는 작동하지만 그렇지 않은 모델에서는 작동합니다.

  • 블랙 베리 9000
  • 노키아 N97 :

    그것은 작동합니다. 이 응용 프로그램을 설치하되 브라우저가 열리지 않습니다 :

    • 노키아 E71 :
    • 블랙 베리 Javeline 8900

    아이디 은에하지 작업을 수행합니다.

  • Nokia n81 : Idem.
  • 삼성 f330 : 앱을 설치할 수 없습니다.
  • BB 9800 : 설치 확인. 브라우저 OK 페이지. 앱을 닫으면 다시 시작됩니다. (어쩌면 도움이 될 JavaME에서 ") 마무리 ("어떤 종류를 사용하고 계십니까?)

나는 그것이 일부 휴대 전화와 다른 작동 이유를 알고하지하지 않습니다. 이론 상으로는 J2ME (JavaME)을 지원하는 모든 전화기에서 작동해야합니다.

편집 : 여기에 관련 코드가 있습니다.

protected void startApp() throws MIDletStateChangeException { 
     // TODO Auto-generated method stub 

    boolean mustExit = false; 
    try { 

     /** 
     * mustExit - Boolean 
     * 
     * Some MIDP platforms are more restricted than others. 
     * For example, some don't support concurrent processing, 
     * so the MIDlet must exit before the platform can honor 
     * a service request. 
     * 
     * If <true> destroy the app. So the browser 
     * can start. 
     */ 
     mustExit = platformRequest("http://www.stackoverflow.com"); 
    } catch (ConnectionNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    if(mustExit){ 
     destroyApp(true); 
     notifyDestroyed(); 
    } 

    //Display.getDisplay(this).setCurrent(timeAlert); 

} 
+0

코드를 본 적이 없다면 응용 프로그램의 문제점을 알기 어렵습니다. 제발, 게시 해. – Malcolm

+0

완료 ** 수정 **. – Kani

답변

6

당신은 수명주기 방법 등 startApp()platformRequest 같은 물건을 할 수 없습니다. 이것은 비동기식 동작이므로 사용자에게 권한 부여 등을 요청해야합니다. 시스템 스레드에서는이를 수행하면 안됩니다.

시스템 스레드에서 호출 된 메소드는 화면 재 작성 또는 사용자 입력 처리와 같은 다른 작업을 수행 할 가능성이 높으므로 최대한 가깝게 처리해야합니다. platformRequest은 차단 작업이므로 장치가 정지 할 수 있습니다.

일부 기기는 다른 기기보다 더 잘 처리 할 수 ​​있으므로 불일치가 발생합니다.

platformRequest을 수행 할 새 스레드를 시작하고 모두 잘되어야합니다. 당신은 어디서나 새 스레드를 시작할 수 있습니다.

+0

다음에 사용해야하는 또 다른 지침이 있습니까? 가능하다면 게시 할 수 있습니까? – Kani

+1

내가 말했듯이, 새로운 스레드에서 그것을하십시오 :'new Thread (new runnable() {public void run() {platformRequest ("http://www.stackoverflow.com");}}). ' – funkybro

+0

고맙습니다. 나는 그것을 구현하려고 노력할 것이다. 하지만 약간의 해답을 설명해 주시겠습니까? 내 "뉴비"죄송합니다. 나는 모바일 개발자로 시작하고있다. 왜 시스템 스레드에서 수행해서는 안됩니다. 왜'startApp()'에서'platformRequest'를 사용하지 않고 장치가이 함수를 처리 할 수있게 만드는가?장치주기의 어느 부분에 내가 제안하는 스레드를 넣어야합니까? 제 말은 "차별화"입니다. – Kani