gpt4 book ai didi

java - 存储给定 ParseUser 的所有 ParseFiles?

转载 作者:行者123 更新时间:2023-12-01 13:47:32 25 4
gpt4 key购买 nike

我是 Parse 新手,想知道是否有任何方法可以将给定 ParseUser 的所有 ParseFiles(在本例中为图像)存储到 ArrayList 之类的内容中?

这是我的代码:

public ArrayList<ParseFile> getFiles() {

ArrayList<ParseFile> files = new ArrayList<ParseFile>();

//mUser is the current ParseUser
ParseQuery<ParseObject> query = ParseQuery.getQuery(mUser.getUsername());
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> fileList, ParseException e) {
if (e == null) {
Log.d("FILES", "Retrieved " + fileList.size() + " files");

for(ParseObject ch:fileList) {


image = ch.getParseFile("image");
files.add(image);

@Override
public void done(byte[] arg0, ParseException arg1) {
//nothing to do here
}
});

}
Log.i("TAG", ": " + files.size());


} else {
Log.d("FILES", "Error: " + e.getMessage());
}
}

});
Log.i("DONE", ": " + files.size());

return files;
}

当我在done()中时,我为这个特定用户添加的3个图像被添加,并且我得到了一个大小为3的ArrayList,这是预期的。当我在 did() 之外时,ArrayList 的大小返回到 0,我假设这是因为它在查询之外被引用。果然它返回一个空的 ArrayList(并不太令人震惊)。

我觉得这应该是一个简单的解决方案,但我似乎无法弄清楚。我尝试创建一个静态 ArrayList 变量,但这似乎也不起作用。知道如何返回所需的 ArrayList 吗?

最佳答案

我认为问题在于,在后台进程完成之前,外部线程仍在继续。换句话说..

 1. query.findInBackground(....);
2. Log.i("DONE" ....);

.. 2. 在 1. 完成之前执行。 Parse“inBackground”的全部要点是它完成您的线程不依赖的操作。如果您需要对列表执行某些操作,则应该在与后台线程相同的线程中执行此操作,或者不要在“inBackground”执行此操作。

关于java - 存储给定 ParseUser 的所有 ParseFiles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com