gpt4 book ai didi

java - Parse.com 查询太慢,需要更快

转载 作者:行者123 更新时间:2023-11-30 01:01:32 26 4
gpt4 key购买 nike

我的 Parse.com 查询太慢,下面的代码是 1 个网络调用。因此我想并行执行 3 个查询:

  1. 查询行 0 - 200
  2. 查询第 201 - 400 行
  3. 查询第 401 - 500 行

这是当前代码:

    public static void readBusShelters() {

ParseQuery<ParseObject> query = ParseQuery.getQuery(BusShelter.TABLE_NAME);
query.setLimit(500);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {

}
});
}

一些帮助将不胜感激!

最佳答案

将解析查询包装在带有回调的 AsyncTask 中,并在线程池上执行以使任务能够并行运行。

例子:

public class MainActivity extends AppCompatActivity implements OnTaskCompleted {

@Override
public void onTaskCompleted(List<ParseObject> response) {

}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);


new FetchParseQueryTask(MainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new PagingOptions(0, 200));
new FetchParseQueryTask(MainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new PagingOptions(1, 200));
new FetchParseQueryTask(MainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new PagingOptions(2, 200));
}
}

回调:

public interface OnTaskCompleted {
void onTaskCompleted(List<ParseObject> response);
}

FetchParseQueryTask 类的示例实现:

public class FetchParseQueryTask extends AsyncTask<PagingOptions, Void, List<ParseObject>> {

private OnTaskCompleted mTaskCompleted;

public FetchParseQueryTask(OnTaskCompleted activityContext){
mTaskCompleted = activityContext;
}

@Override
protected List<ParseObject> doInBackground(PagingOptions... params) {
PagingOptions pagingOptions = params[0];
ParseQuery<ParseObject> query = ParseQuery.getQuery("TABLE_NAME");

query.setLimit(pagingOptions.getLimit());
query.setSkip(pagingOptions.getPage() * pagingOptions.getLimit());

try {
return query.find();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}

protected void onPostExecute(List<ParseObject> result) {
super.onPostExecute(result);

if (mTaskCompleted != null) {
mTaskCompleted.onTaskCompleted(result);
}
}
}

PagingOptions 类:

public class PagingOptions {

private int mPage;

private int mLimit;

public PagingOptions(int page, int limit)
{
mPage = page;
mLimit = limit;
}

public int getPage() {
return mPage;
}

public void setPage(int mPage) {
this.mPage = mPage;
}

public int getLimit() {
return mLimit;
}

public void setLimit(int mLimit) {
this.mLimit = mLimit;
}
}

关于java - Parse.com 查询太慢,需要更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316927/

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