2016-07-30 43 views
0

我的ProgressDialog在调用retrofit enqueue方法并将数据添加到领域时变为停止。唯一的问题是progressdialog循环停止并且没有错误。这是我的代码。显示ProgressDialog,同时获取数据并将数据添加到领域db

private void DownloadQuestions(final String chapterId){ 

    final Call<Questions> questionCall = MainApi.createService(MainService.class). 
      getQuestionsByChapterId(chapterId); 
    Log.d("Package_Name", getApplicationContext().getPackageName()); 
    pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); 
    pDialog.getProgressHelper().setBarColor(Color.parseColor("#272E3E")); 
    pDialog.setTitleText("Downloading"); 
    pDialog.show(); 

    questionCall.enqueue(new Callback<Questions>() { 
     @Override 
     public void onResponse(Call<Questions> call, Response<Questions> response) { 
      questions.addAll(response.body().getQuestions()); 
      for (Question ques : questions) { 
       realm.beginTransaction(); 

       QuestionRealm questionRealm = realm.createObject(QuestionRealm.class); 
       questionRealm.setChapter_id(ques.getChapter_id()); 
       questionRealm.setQuestion_type_id(ques.getQuestion_type_id()); 
       questionRealm.setQuestion(ques.getQuestion()); 
       questionRealm.setHint1(ques.getHint1()); 
       questionRealm.setHint2(ques.getHint2()); 
       questionRealm.setHint3(ques.getHint3()); 
       questionRealm.setHint4(ques.getHint4()); 
       questionRealm.setAnswer(ques.getAnswer()); 
       questionRealm.setYear(ques.getYear()); 
       realm.commitTransaction(); 
      } 
      pDialog.dismissWithAnimation(); 
      Toast.makeText(getApplicationContext(), " Questions downloaded", Toast.LENGTH_SHORT).show(); 
      quesDownload.setVisibility(View.GONE); 
      chapCheckBox.setVisibility(View.VISIBLE); 

     } 

     @Override 
     public void onFailure(Call<Questions> call, Throwable t) { 

     } 
    }); 

} 

的题数以上400虽然我用的处理程序,即progressdialog仍然来自停止循环,当所有数据添加到境界解雇。我需要解决什么问题?提前致谢。

回答

0

您正在使用领域调用阻止您的UI线程。您需要将onResponse方法内的代码移至新线程。

最简单的解决方案Realm.getDefaultInstance()。executeTransactionAsync(/ * realm insertions here!* /);

最佳解决方案:RxJava!