2014-10-16 2 views
0

일부 응용 프로그램을 업데이트해야합니다. 이미 사용 중이므로 큰 변경을 원하지 않습니다 ...이미 완성 된 앱에 progressDialog 또는 회 전자를 추가하려면 어떻게해야합니까?

새 활동이로드 될 때마다 진행 대화 상자 또는 회 전자를 추가하고 싶습니다. AsyncTask 등을 사용해야하는 것처럼 몇 가지 기사와 질문을 읽었습니다. 그러나 더 쉬운 방법이 있는지 알고 싶습니다. 새로운 레이아웃이로드 될 때까지 spinner/progressDailog를 보여줄 함수를 만드는 것과 같은 것일지도 모릅니다.

내가 원하는 것을 알고 있다면 가능한지 말해 줄 수 있습니까? 감사합니다

편집 : 하나의 아이디어가 있습니다. 현재 레이아웃을 오버레이 할 수있는 스피너가있는 레이아웃을 만들 수 있습니까? 그렇다면 어떻게?

편집이 : AsyncTask를

private ProgressDialog progressDialog; 
    @Override 
    protected void onPreExecute(){ 
     progressDialog = new ProgressDialog(mContext); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.setCancelable(false); 
     progressDialog.setIndeterminate(true); 
     progressDialog.show(); 
    } 

    // Some code here 

@Override 
    protected void onPostExecute(CustomAsyncTaskResult<User> result) { 
     progressDialog.dismiss(); 
     ((LoginActivity)mContext).getResult(result); 
    } 

답변

0

간단한 대답은 - 아니, 더 간단한 방법이 없습니다. 활동이로드되는 동안 회 전자를 표시하려면 asynctask (또는 다른 별도의 스레드)를 작성해야합니다. 좋은 소식은 하나의 asynctask를 만들어서 모든 작업에서 재사용 할 수 있다는 것입니다. 나쁜 점은 스피너를 추가하려는 모든 활동을 수정하는 것 외에는 선택의 여지가 없다는 것입니다.

+0

좋아요, asynctask를 사용했는데 진행 대화 상자가 표시되고 dissapeared되었지만 새 레이아웃이 cca 5 초 후에 표시되었습니다. 어떻게해야합니까? 코드는 질문에 표시됩니다. – kristyna

+0

@ user3808179이 이유는'doInBackground' 메소드에서 초기화를해야하기 때문입니다. 현재 asynctask는 실제로 비동기 적으로 아무것도하지 않습니다. 심각한 리팩토링 없이는 벗어날 수 없습니다. 액티비티를 초기화하는 방식을 변경해야합니다. 즉, asynctask에서 대부분의 초기화 작업을 변경해야합니다. –

+0

오해의 여지가 있습니다 ... doInBackgroud() 메소드가 있습니다. 그러나이 방법 중 일부 코드도 있습니다. 진행 대화 상자가 곧 사라지는 이유는 그 때문입니까? – kristyna

0

AsyncTask를 사용하는 이유는 ProgressBar가 UI 스레드가 수행해야하는 다른 작업을 차단하므로 수행하지 않으려는 UI 스레드를 사용하여 표시되기 때문입니다. ProgressBar 디스플레이를 백그라운드 스레드에 위임해야합니다. 그래서, 당신은 이것을 할 수 없습니다.

관련 문제