我决定AsyncTask
在我的应用程序中添加一个片段,以便更有效地从数据库接收项目。
我将泛型设置为Void, Void, List<Object>
(Object
我创建的对象在哪里),内部方法如下:
private class GetObjectsTask extends AsyncTask<Void, Void, List<Object>> {
@Override
protected List<Object> doInBackground(Void... params) {
SQLiteDatabase db = mDbHelper.getInstance(getActivity().getApplicationContext()).getReadableDatabase();
String[] projection = {
.........
};
String sortOrder = ...;
Cursor c = db.query(TABLE_NAME, projection, null, null, null, null, sortOrder);
while(c.moveToNext()) {
long itemId = ...;
String title = ...;
long startMil = ...;
long endMil = ...;
mList.add(new Object(itemId, title, new Date(startMil), new Date(endMil), null, null));
}
db.close();
return mList;
}
}
这是我从同一个片段中调用任务的方式:
new GetObjectsTask().execute((Void[]) null);
任务执行后,我设置了一个列表视图来显示数组中的项目。
之前在没有任务的情况下使用了完全相同的代码,因此它应该可以工作。问题是 - 它没有。
mList
在持有这个内部任务类的片段中定义,所以我希望它能够工作。
什么可能导致这种行为?
此外,是否有可能(并推荐)使任务设置列表视图以显示返回的项目?(通过覆盖onPostExecute(Result)
)
谢谢!