andrew
unread,Jan 5, 2012, 1:27:09 AM1/5/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to android-platform
I've got a performance problem while fetching data from a cursor in
AsyncTaskLoader. Testing in android API level 10. For example 2
classes with cursor - TestFragmentUI fetching data in UI thread and
TestFragment fetching data in none UI thread.
public class TestFragment extends Fragment implements
LoaderManager.LoaderCallbacks<Object> {
...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
...
getLoaderManager().initLoader(0, null, this);
...
}
public android.support.v4.content.Loader<Object> onCreateLoader(
int id, Bundle args) {
return new Loader(getActivity());
}
class Loader extends AsyncTaskLoader<Object> {
public Loader(Context context) {
super(context);
}
public Object loadInBackground() {
...
DataBaseHelper helper = new DataBaseHelper(getContext());
SQLiteDatabase database = helper.getReadableDatabase();
long start = System.currentTimeMillis();
Cursor data = database.rawQuery(String.format(SQL_LOAD,
parametr), null);
while (data.moveToNext()) {
String number =
data.getString(data.getColumnIndex("number"));
}
data.close();
Log.i(TAG, "load: " + (System.currentTimeMillis() - start));
...
}
}
...
}
and
public class TestFragmentUI extends Fragment {
...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
...
DataBaseHelper helper = new DataBaseHelper(getActivity());
SQLiteDatabase database = helper.getReadableDatabase();
...
long start = System.currentTimeMillis();
Cursor data = database.rawQuery(String.format(SQL_LOAD, parametr),
null);
while (data.moveToNext()) {
String number = data.getString(data.getColumnIndex("number"));
}
data.close();
Log.i(TAG, "load: " + (System.currentTimeMillis() - start));
...
}
...
}
In emulator TestFragment class output time that is 10 times slower
than output TestFragmentUI and visually it is very noticeable. On a
real device (I've got a DHD) 3-fold difference - still very big.
Any ideas?