1
我有一个冻结我的应用程序分析查询:我可以在后台迭代吗?
ParseQuery<ParseObject> query = new ParseQuery<>("Puzzle");
query.whereEqualTo("puzzle", "somePuzzle");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
ArrayList<Puzzle> listPuzzle = new ArrayList<>();
for (ParseObject object : objects) listPuzzle.add(new Puzzle(object));
ListView list = (ListView) findViewById(R.id.list_puzzle);
if (list != null && listPuzzle.size() != 0) {
AdapterPuzzle adapterPuzzle = new AdapterPuzzle(listPuzzle, ScreenPuzzle.this);
list.setAdapter(adapterPuzzle);
}
} else e.printStackTrace();
}
});
当我这样做查询,活动几秒钟冻结,直到我有我的ListView填补。
我测试了运行查询而没有方法中的内容“完成”,它似乎运行顺畅,所以我的猜测是我的行为在“完成”方法冻结了活动,因为它可能会做得太多工作,特别是迭代器:
for (ParseObject object : objects) listPuzzle.add(new Puzzle(object));
有什么办法来运行这个迭代器或在后台这一切的行动?任何方法来避免这种冻结?