2011-09-20 5 views
1

웹에서 예제를 통해 asynctask 스레드를 구현하려했지만 원하는 방식으로 실행하지 못했습니다.sqlite에서 데이터를 가져 오는 동안 안드로이드 진행 대화 상자

웹 서버에 데이터를 보내는 클래스가 있습니다. 그것은 3 개 작업이 포함 SQL에서 ID -grab -get 데이터와 JSON 파일 보내기 -

내가 사용자 대기에 대한 진행 상황을 보여주는 진행 대화 상자 또는 진행 막대를 구현하고자하는 JSON 파일을 작성 .

마지막으로 sqlite에서 가져온 데이터를 표시하기 위해 테스트 한 progressdialog는 Progress Bar Example을 기반으로했습니다. 문제는 2 번 이상 파일을 생성하려고 시도 할 때 스레드가 시작되지 않는다는 것입니다.

내 경우에는 무엇이 최선입니까? 보낼 대상과 보낼 단추를 선택하는 스피너가 있습니다. 버튼을 클릭하면

, 기본적으로 내가 가진 :

HttpResponse response = GetChantier(commentaire); 
    //Checking response 
    if(response != null) 
    { 
     String _response=EntityUtils.toString(response.getEntity()); 
     int chantier_serveur = Integer.parseInt(_response.replaceAll("[\n\r]", "")) 
     String fichier = DonneesToJson(db,chantier, chantier_serveur); 
     HttpResponse response = SendJson (chantier, fichier); 
    } 

내가 DonneesToJson 및 SendJson에 대한 진행 상황을 구현해야 할 것입니다.

DonnesToJson은 커서를 잡고 커서를 반복하면서 json 파일을 작성합니다. SendJson은 파일과 2 개의 필드를 보내는 HttpPost입니다.

저는 자바 프로그래밍과 스레드에 새로운 것이 있습니다. 도움을 주시면 감사하겠습니다.

감사합니다.

+0

들어 asynctask를 사용하고 preExecute 함수에서 progressDialog를 호출하십시오. –

+0

asynctask에서 args를 전달하는 방법은 무엇입니까? – Cedric

+0

asynctask는 클래스와 비슷하므로 생성자를 만들고이를 사용하여 필드를 초기화합니다. –

답변

1

다음과 같이 백그라운드 작업을 수행 할 때 비동기 작업을 사용하십시오. 이들에

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    new Asyn_Task().execute("name","title"); 
} 


class Asyn_Task extends AsyncTask<Void, Void, Void> { 
    private final ProgressDialog dialog = new ProgressDialog(Facebook_Post_View.this); 
    // can use UI thread here 
    protected void onPreExecute() { 
     this.dialog.setMessage("Loading..."); 
     this.dialog.setCancelable(false); 
     this.dialog.show(); 
    } 
    @Override 
    protected Void doInBackground(String... param) { 
     // TODO Auto-generated method stub 
        name=params[0]; //Like 
        title=params[1]; 

     // Do your all Stuffs 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 

     if (this.dialog.isShowing()) { 
      this.dialog.dismiss(); 
     } 
    } 
} 

위치 가능한 0 이름 뜻 에서와 위치 1 개 타이틀에서 원하는대로 값을 전달할 수 available.Similarly 것이다 ..

를 더 참조 점검이 Async Task

+0

감사합니다. Venky. 이것은 많은 도움을 주었고 AsyncTask가 작동하는 방식과 체인을 연결하는 방법을 이해할 때 훌륭하게 작동합니다! 지금 오류 처리를 추가하고 있으며 모두보기 좋습니다. – Cedric

관련 문제