2011-12-14 2 views
1

사용자 작업을 시뮬레이트하기위한 스크립트를 작성했습니다. 예를 들어 워크 플로는 먼저 아이콘을 누르고 활동을 시작합니다. 그런 다음 다른 행동을하십시오. 질문은 활동이 완전히 시작된 정확한 시간을 알 수 없습니다. 현재 나는 sleep을 사용하여 스크립트를 대기 상태로 만듭니다. 활동이 완전히 시작된시기를 알 수있는 방법이 있습니까?활동이 완전히 시작된시기를 알 수있는 방법이 있습니까?

+1

그게 당신이 제어 할 수있는 활동입니까? 그래서 당신은 그것에 코드를 작성할 수 있습니까? 그리고 당신은 어디에서 스크립트를 실행합니까? –

답변

-1

가 최종 작업 활동이 시작된 후 바로 뭔가를 실행하는 것입니다 ... 활동에서 호출이

첫 번째 방법을 따라서 우리가 onCreate() 시스템을 완료하는 onResume() 메소드를 호출 onStart() 호출 말할 수 onCreate()입니다 ... onResume()가 완료대로

당신이 무시하지 않을 경우 ... 당신의 활동이 제대로 실행됩니다 말할 수 onStart() 또는 onResume() 내가 onCreate()의 마지막 문장으로 쓸 수있는 기술 갈 거 야. 그게 보통 onStart() 또는 onResume()이 필요하지 않을 때하는 일입니다.

Handler의 개체를 만들 수 있습니다.

Handler handler = new Handler();

처럼 처리기는 만든 후 몇 번을 호출되고 발사가 완료되는 방법 postDelayed() 있습니다.

timeInMilliSeconds MS가 postDelayed에서 제공 runnablerun 방법에 정의 된 프로세스를 시작하는 모든 프로세스 완료 후, 응용 프로그램이 ..... 대기

handler.postDelayed(runnable,timeInMilliSeconds);

과 같이 호출

따라서

당신의 임무는 발사가 끝날 때를 알고 자한다면의 끝에 당신이 어떤 행동을 사용 handler.PostDelayed() 방법을 수행하고 매우 낮은 timeInMilliSeconds을 유지하려면 당신의 onStart() ....

에서 호출... [1 ~ 10].

0

나는 활동이 시작될 때 정확히 무엇을하고 싶은지 알지 못합니다. 그러나 일반적으로 모든 사용자의 요구 사항은 UI의 뷰 또는 무언가의 너비를 찾는 것입니다. 것은 UI가 그려지기 전에 onCreate가 호출되기 때문에 측정을 포함하는 UI와 관련된 것은 아무것도 할 수 없다는 것입니다. 이를 위해 글로벌 레이아웃 리스너를 사용할 수 있습니다.

ViewTreeObserver vto = outerLayout.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     outerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
     //This is executed once the layout is drawn. AFAIK this is as close as it gets 
     to when the activity is started. 
    } 
}); 
관련 문제