2012-03-31 2 views

답변

8

나는 UI 스레드에서 대기하지 제안합니다.

작업에 Handler을 사용할 수 있습니다. run 메서드는 Handler이 생성 된 동일한 스레드에서 실행됩니다.

//delay in ms 
    int DELAY = 1000; 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() {    
     @Override 
     public void run() { 
      Intent intent = new Intent(CurrentActivity.this, NextActivity.class); 
      startActivity(intent);     
     } 
    }, DELAY); 
+0

나는 비슷한 것을했는데, "지연 후 뭔가를하기"를 원할 때, 클래스 호출을 시도 할 때 좋아하지 않는다. 의도 newClass = 새로운 의도 (this, ClassName.class); this.startActivity (newClass); – user1274830

+0

this.startActivity (..)를 호출하지 마십시오. 'this'를 생략하고 startActivity (..)를 호출하십시오. – thaussma

+0

Elipse가이 코드 라인을 좋아하지 않습니다. Intent class = new Intent (this, Failed.class); - 내가 그것을 만들고 싶다 - 의도 클래스 = 새로운 의도(); - 그런데 어떤 수업을 해야할지 모르겠습니다. 매우 실망합니다. – user1274830

-1

지연 중에 UI가 어떤 조치를 취해야합니까? 그렇지 않은 경우 버튼의 처리기 안에

Thread.sleep(timeToWaitInMilliseconds); 

을 사용할 수 있습니다. 이렇게하면 UI 스레드가 몇 초 동안 중지되지만 UI가 지연되는 동안 "고정"됩니다.

약간 더 나은 옵션은 새 스레드 인 AsyncTask와 Handler를 사용하고 새 작업 열기를 지연시키고 처리기에서 새 활동을 여는 시간 동안 해당 스레드를 잠자기 상태로 만드는 것입니다.

asynctask는 사용자가 "지연"중에 UI와 상호 작용할 수 있으므로 귀하의 경우에 대해 조금 더 좋습니다. 여기 AsyncTasks에

더 많은 정보는 :

http://developer.android.com/reference/android/os/AsyncTask.html

+0

방금 ​​제안을 시도했습니다. 버튼을 클릭하면 레이아웃을 보도록 요청하고 있습니다. 5000 밀리 초 동안 지연하라고 요구 한 다음 새로운 활동으로 이동하십시오. 무엇인가의 이유로 5 초 동안 지연되고, 레이아웃을 초 단위로 플래싱 한 다음 새 활동으로갑니다. – user1274830

관련 문제