解析异步数据加载器(findInBackGround)不会重新连接到活动

时间:2013-05-09 05:07:59

标签: android

在我的Android应用程序中,我使用Parse.com在线数据库来存储我的数据。在我的活动的onCreate()方法中,我使用方法findInBackground()来异步加载数据。

findInBackground()方法最初不会重新连接到活动并继续永久运行。但是,如果我单击手机的主页按钮然后重新加载应用程序,findInBackGround()方法最终会重新连接并加载数据。

我想:

  1. 使findInBackground()方法重新与活动重新连接,而无需重新加载应用
  2. 在加载数据时显示加载图像(动画gif?)。
  3. 你们对我的问题有什么建议吗?

    提前感谢您的帮助,

    亚历

    PS:我已经尝试了解析的find()方法。即使它与应用程序自动重新连接,我也不认为这是正确的方法,因为它会阻止调用者活动的UI,直到加载数据。

    ============================================ ====================================== 我终于找到了问题的答案:

    1. 我把代码填入listView INSIDE一个findCallBack类的方法。因此,我确保仅在完成运行后才使用findInBackground()方法的结果。以前,我已经把代码填充到findCallBack类的listView OUTSIDE中,所以即使它在我的代码之后,它实际上是在findInBackground()结束之前执行的,所以没有用。

      < / LI>
    2. 对于加载图像,我使用了本网站上的答案,其中包括在适当的时间(在findInBackground()之前和之后)激活和停止ProgressDialog。

                          startLoading(); //Show the loading image
                          query.findInBackground(new FindCallback() {
                              public void done(List<ParseObject> allQuestionsVal, ParseException e) {
                                  if (e == null) {                           
                                      for(int i = 0; i<=allQuestionsVal.size()-1;i++){
      
                                          ParseObject questionVal = allQuestionsVal.get(i);   
                                          Question question = new Question(questionVal.getObjectId(), 
                                                  questionVal.getString("FIELD1"), 
                                                  questionVal.getString("FIELD2"),
      
                                          allQuestions.add(question);
                                      }                       
                                      stopLoading(); //Remove the loading image
      
                                      //Use the result of the Query (allQuestions) to populate listVIew
                                      ListView list = (ListView) findViewById(R.id.all_questions);        
                                      AllQuestionsAdapter adapter=new AllQuestionsAdapter(AllQuestions.this, allQuestions);
                                      list.setAdapter(adapter);               
      
                                  } 
                                  else {      
                                          stopLoading(); //Remove the loading image
                                      }
                                  }
                              }); 
      

      protected ProgressDialog proDialog;

      protected void startLoading() {
          proDialog = new ProgressDialog(this);
          proDialog.setMessage("loading...");
          proDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
          proDialog.setCancelable(false);
          proDialog.show();
      }
      
      protected void stopLoading() {
          proDialog.dismiss();
          proDialog = null;
      } 
      
    3. PS:欢迎任何评论:)

0 个答案:

没有答案