2012-03-03 3 views
0

내가 찾고있는 것은 몇 초 동안 사용자 상호 작용을 사용 중지하는 방법입니다. 많은 방법을 시도했지만 아무도 여기에서 작동하지 않는 것은 한 가지 방법입니다. 내가 postDelayed 스레드를 사용하여 작업에 대한 생각몇 초 동안 사용자 상호 작용 사용 안함 android

final LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout1); 
    ll.setEnabled(false); 


    new Handler().postDelayed(new Runnable(){ 
     public void run() { 
      ll.setEnabled(true); 
     } 
    }, 3000); 
+0

목록보기 또는 전체 활동에 대해서만 사용을 중지 하시겠습니까 (사용자가 귀하의 응용 프로그램에서 전혀 작업을 수행 할 수 없게하십시오). –

+0

전체적으로 활동하고 싶습니다. – Programmer

+0

그리고 한 가지 더 질문 : 사용자가 계속하기 전에 일부 백그라운드 프로세스가 먼저 완료되기를 원하기 때문에 실제로이 작업을 원하십니까? (또는 다른 특별한 이유가 있습니까?) –

답변

2

갈 방법이 아니다. AsyncTask

가능한 한 가지 문제점은 현재 접근 방식에서 대기 시간을 대략 3 초로 근사하지만 가능한 한 작업 완료 후 즉시 AsyncTask으로 계속 진행할 수 있다는 것입니다. 비동기 작업은 기본적으로 UI를 차단하지 않고 배경에서 무언가를 실행할 수 있습니다. 그러나 작업이 끝날 때까지 응용 프로그램과의 사용자 상호 작용을 차단하는 진행 대화 상자를 표시하도록 구성 할 수도 있습니다. 난 당신이 게시물은 // HERE GOES YOUR BACKGROUND WORK의 장소에서 작업을 지연 배치 제안

public class ProgressTask extends AsyncTask<Void, Void, Boolean> { 
    /** progress dialog to show user that the backup is processing. */ 
    private ProgressDialog dialog; 
    /** application context. */ 
    private Activity activity; 

    public ProgressTask(Activity activity) { 
     this.activity = activity; 
     dialog = new ProgressDialog(context); 
    } 

    protected void onPreExecute() { 
     this.dialog.setMessage("Please wait"); 
     this.dialog.show(); 
    } 

    @Override 
    protected void onPostExecute(final Boolean success) { 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 
    } 

    protected Boolean doInBackground(final Void... args) { 
     // HERE GOES YOUR BACKGROUND WORK 
    } 
} 

: 여기

백그라운드에서 뭔가를 실행하고 진행 대화 상자를 보여줍니다 비동기 작업의 예입니다.