2012-06-04 2 views
3

HTTP 요청을 사용하여 웹 서비스에서 데이터를 가져 오는 가장 좋은 방법은 궁금합니다. AsyncTask 또는 AsyncTaskLoader 사용android에서 웹 서비스 요청을 가져 오는 올바른 방법

Activity에서 LoaderManager를 사용하여 AsyncTaskLoader를 사용하고 있지만 구성 변경 사항이 특히 방향 변경이있을 때 문제가 발생합니다. 로더가 OnFinish()를 호출하는 것을 중지합니다.

저는 또한 더 유연하고 독립적 인 AsyncTask를 시도해 보았습니다. 아직 2.2에 있었던 이전 프로젝트에서 잘 작동합니까? 3.0에서 AsyncTaskLoader가 더 권장되므로 4.0 여러분의 의견에 감사드립니다.

+0

asynctaskloader를 사용할 때 사용자 지정 어댑터의 데이터를 업데이트 할 수 있습니까? –

+0

@Mohit : 네, 'onLoadFinish()'에 구현하려고합니다. 예외가 "자식 뷰를 만질 수 있습니다"등의 예외가있는 경우 처리기를 사용하여 뷰를 업데이트하는 스레드를 실행할 수 있습니다 – CarlCarrots

답변

1

은 AsyncTask를 들어 당신이 클래스

private class asnktask extends AsyncTask<Void, Void, Integer> { 


    private Context context;  
    private ProgressDialog mProgressDialog; 

    public asnktask(Context _context) { 
     context =_context; 
    } 

    @Override 
    protected void onPreExecute() { 
     mProgressDialog = new ProgressDialog(this.context); 
     mProgressDialog.setMessage("Loading wait....."); 
     mProgressDialog.setIndeterminate(true); 
     mProgressDialog.setCancelable(true); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Integer doInBackground(Void... params) { 
//Do stuff of getting web service response 
     return 1; 
    } 

    @Override 
    protected void onPostExecute(Integer result) { 
     mProgressDialog.dismiss(); 
} 
    } 

에게 작업을
new asnktask(youractivity.this).execute(); 를 시작하고 쓰고 싶은 곳에서 아래 쓰기 // !!!!!!!!를 완료

+0

가장 좋은 접근 방법은 무엇입니까? – CarlCarrots

+0

Ohh 죄송합니다 ... AsyncTask는 UI 스레드와 별도로 실행되기 때문에 더 좋습니다. – Dhrupal

+0

AsyncTaskLoader도 UI 스레드에서 실행됩니다. – CarlCarrots

관련 문제