2013-06-09 1 views
-1

조건으로 스레드 사용 시간 (sleep)이 필요합니다. 예를 들어"sleep"상태로 스레드를 정의하는 방법은 무엇입니까?

:

Thread splashTread = new Thread() { 
       @Override public void run() { 
        try { 
         if (!internet){ 
          sleep(4000); 
         } 
          // do loads 

        } catch (InterruptedException e) { 
        } finally { 
         startActivity(new Intent("MainScreen")); 
         finish(); 
        } 
       } 

온라인은 "진행 막대가"적절하고 시각적으로 상승한다. 인터넷이 너무 빠르게 지나가고 보이지 않을 때, 사용자는이 경우 몇 초 동안 진행 막대를 보길 원합니다. 그래서 잠을 자려고했지만 한 가지 조건으로 입력하면 작동하지 않습니다.

+0

'sleep' 차단 EDT합니다. 하지 마세요 ... 절대 ........ 그것을 사용하십시오 :) – Maroun

+0

왜? 수면을 사용하지 않고 Android에서 '스플래시 스크린'을 만드는 방법은 무엇입니까? – ephramd

답변

2
Handler handler = new Handler(); 

Runnable spalshRunnable = new Runnable() { 
    @Override 
    public void run() { 
     startActivity(new Intent(YourActivity.class, MainScreen.this)); 
     finish(); 
    } 
} 

는 :

handler.postDelayed(spalshRunnable, 3000); 
+0

대단히 감사합니다 @blackbelt 스레드 또는 처리기/실행 파일을 사용하여 어떤 차이가 있습니까? – ephramd

+1

은 모두 같은 스레드에서 실행됩니다. 그것은 대안, 이모 클리너 – Blackbelt

+1

@ ephramd 사용자의 경우 처리기를 사용해야합니다. 또한 스레드 내부에서 수면을 사용하는 것은 나쁜 설계입니다. http://developer.android.com/training/articles/perf-anr.html – Raghunandan

0

확인. 솔루션 :

이 스레드에는 두 가지 예외가 필요합니다. InterruptedException 및 Exception.

Thread splashTread = new Thread() { 
       @Override public void run() { 
        try { 
         if (!internet){ 
          sleep(4000); 
         } 
          // do loads 

        } catch (InterruptedException e) { 
        } catch (Exception e) { 
        } finally { 
         startActivity(new Intent("MainScreen")); 
         finish(); 
        } 
       } 
에서 onCreate 내부
+1

Thread 또는 HandlerThread를 구현하는 경우 작업자 스레드가 완료 될 때까지 대기하지 않는지, 즉 Thread.wait() 또는 Thread.sleep()를 호출하지 않도록 UI 스레드가 차단되지 않는지 확인하십시오. 블랙 벨트에 의해 제안 된 처리기를 사용하십시오. – Raghunandan

관련 문제