在我的Android应用程序中,我使用Parse.com在线数据库来存储我的数据。在我的活动的onCreate()
方法中,我使用方法findInBackground()
来异步加载数据。
findInBackground()
方法最初不会重新连接到活动并继续永久运行。但是,如果我单击手机的主页按钮然后重新加载应用程序,findInBackGround()
方法最终会重新连接并加载数据。
我想:
findInBackground()
方法重新与活动重新连接,而无需重新加载应用你们对我的问题有什么建议吗?
提前感谢您的帮助,
亚历
PS:我已经尝试了解析的find()方法。即使它与应用程序自动重新连接,我也不认为这是正确的方法,因为它会阻止调用者活动的UI,直到加载数据。
============================================ ====================================== 我终于找到了问题的答案:
我把代码填入listView INSIDE一个findCallBack类的方法。因此,我确保仅在完成运行后才使用findInBackground()方法的结果。以前,我已经把代码填充到findCallBack类的listView OUTSIDE中,所以即使它在我的代码之后,它实际上是在findInBackground()结束之前执行的,所以没有用。
< / LI>对于加载图像,我使用了本网站上的答案,其中包括在适当的时间(在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;
}
PS:欢迎任何评论:)