在我的项目中,我只使用query.find()
中的Asynctask
函数来管理我的数据,例如:
protected Void doInBackground(Void... params)
{
String tipo,data;
int stato;
ParseObject object = ParseObject.createWithoutData("Status",id);
query= ParseQuery.getQuery("Documenti");
query.whereEqualTo("user", ParseUser.getCurrentUser());
query.whereEqualTo("documentgenerated",object);
try
{
results = query.find();
counter = results.size();
if(counter != 0)
{
for (int i = 0; i<results.size(); i++)
{
date = results.get(i).getCreatedAt();
tipo = results.get(i).getString("topologia");
stato = results.get(i).getInt("stato");
ParseFile fileObject = (ParseFile) results.get(i).get("file");
uri= Uri.parse(fileObject.getUrl());
card.add(new DocumentType(data,certificate,uri));
}
}
它运作良好。但我知道还有这个功能:
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
}
});
}
catch (ParseException e)
{
e.printStackTrace();
}
return null;
}
我想问你query.find()
和Asynctask
函数中findInBackground()
之间是否存在差异,或者这些函数在后台执行相同的工作(特别是如果findInBackground()
有效作为Service
)。
感谢您的回答。
答案 0 :(得分:1)
findInBackground()
在新的后台线程中执行(不是服务只是一个线程),因为你已经在后台线程中不需要调用findInBackground()
,除非你有一些特定的要求和你需要多个线程......
所以你可以从主线程中使用findInBackground()
并删除asynTask,或者如果你有必须在后台线程中执行的其他预处理或后期处理,你可以在asyTask中使用find()