2012-04-29 1 views
-3

나는멀티 스레딩 및 LWUIT

는 다음 코드

public class LoaderAnimation extends Container implements Runnable { 

private Thread t; 
private boolean running = false; 

public LoaderAnimation() { 
} 

public void start() { 
    running = true; 
    t = new Thread(this); 
    t.start(); 
} 

public void run() { 
    while (running) { 

      // do something 
      t.sleep(150); 
    } 
} 

public void stop() { 
    running = false; 
} 
} 
, 나는 내가 LWUIT를 사용하고 웹 서비스 에서 일부 데이터를로드하는 동안 대화 상자가 표시 될 수 있도록 할 지금 무슨 일이 실행되는하지만 웹 서비스를 호출하는 코드가 그것의 호출입니다

를 작동하지

public static void showLoaderScreen() 
    { 
     dialog = new Dialog(); 
     dialog.setLayout(new BorderLayout()); 
     canvas = new LoaderAnimation(); 
     dialog.addComponent(BorderLayout.CENTER , canvas); 
     canvas.start(); 
     dialog.show(); 
    } 

public static void dismissLoaderScreen() 
{ 
    canvas.stop(); 
    dialog.dispose(); 
} 
,
+1

이 코드는 컴파일 게시 된 스 니펫을합니까? 내가 말할 수있는 한 [t.sleep (150)] (http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/java/lang/Thread.html# sleep (long) "API javadocs")는'InterruptedException'을 throw하지만 캐치가 없으며'Runnable'이기 때문에 다시는 재실행 할 수 없습니다. 또한, 당신은 더 나은 '휘발성'으로 실행 선언 – gnat

답변

1

이 코드를 시도하십시오. 우리가 처리 분석하는 물건 또는 웹 서비스를 쓸 수

private void startLoader() { 
    Dialog d = new Dialog(); 
    d.getStyle().setBgColor(0xffffff); 
    d.getStyle().setBgTransparency(255); 
    d.show(100, 250, 90, 150, true, false); 
    d.setAutoDispose(true); 
    try { 
     Thread.sleep(30); 
    } catch (InterruptedException ex) { 
     ex.printStackTrace(); 
    } 
    d.dispose(); 
    new Timer().schedule(new TimerTask() { 

     public void run() { 

      new Loader().start(); 
     } 
    }, 30); 
} 

Loader 클래스 등

class Loader extends Thread 

{  public void run() { 

      try { 

       ServiceTypesScreen st = new ServiceTypesScreen(); 
       st.init(); 
      } catch (Exception e) {      
       e.printStackTrace(); 
      } 

     } 
}