java无法在解析中保存变量的状态。com回调
通过查询解析数据库通过后台线程填充的arraylist的内容在保留时遇到问题。下面是我的代码。我创建了一个arraylist供意图使用/发送给其他活动,但即使我尝试将其保存在查询中,它也不会保留其内容
onCreate(){
ArrayList<FunObject> over = new ArrayList<FunObject>();
separateMethod();
//over.size() is still equal to 0.
}
separateMethod() {
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> players, ParseException e){
if (players != null && players.size()>0 ){
ArrayList<PlayerInfo> temp = new ArrayList<PlayerInfo>();
for (ParseObject f : players) {
temp.add(new PlayerInfo (f.getString("name"), f.getString("champion"), f.getString("summoner1"), f.getString("summoner2"), "mid", f.getString("kills") + " / " + f.getString("deaths") + " / " + f.getString("assists")));
}
over = temp
//This line, I try to set value of my over arraylist, but it
//doesnt save when I leave the query
} else {
}
}
});
}
# 1 楼答案
我通过使用异步任务来解决这个问题。基本上,我在后台线程中执行查询,并将从“doInBackground”获取的信息发送到“post”方法中。因为“post”方法是在主线程中完成的,所以我可以在其中保存变量的状态,而不会丢失它
# 2 楼答案
问题是,查询在另一个线程上运行,该线程在
onCreate()
方法完成后完成,多久将取决于网络问题和查询复杂性您需要做的是在设置
over = temp
之后调用另一个方法,可能将其编组到主UI线程,以便让UI或其他代码知道over
现在已填充