Android碎片:从数据库缓慢加载数据
问题描述:
我有一个带有列表视图的fragmentB。列表视图中的数据来自本地数据库。当我点击片段A中的texview时,我将从数据库打开fragmentB与数据。但是在片段B加载之前,我可以看到片段A的一小部分。 FragmentB有asyncTask进行数据库查询。如何避免第二次延迟的这一部分。Android碎片:从数据库缓慢加载数据
代码从FragmentA去fragmentB
borerangeselect.setOnClickListener(new OnClickListener() {
BoreRangeFragment boreranges = new BoreRangeFragment();
@Override
public void onClick(View v) {
rangeboregrade = boregradeselect.getText().toString();
if (!rangeboregrade.equalsIgnoreCase("select")) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.add(R.id.content_frame, boreranges);
FragmentChangeActivity.fragmentStack.lastElement().onPause();
ft.hide(FragmentChangeActivity.fragmentStack.lastElement());
FragmentChangeActivity.fragmentStack.push(boreranges);
ft.commit();
}
}
});
FragmentB OnActvitycreated()
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
new MyBoreRangeTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,ToleranceFragment.rangeboregrade);
}
答
如果您正在使用的SQLite的工作,然后更好地使用LoaderManagers,他们很容易使用db时非常高效。
public class SampleActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor> {
public Loader<Cursor> onCreateLoader(int id, Bundle args) { ... }
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { ... }
public void onLoaderReset(Loader<Cursor> loader) { ... }
/* ... */
}
以下是Android文档,你可以参考以获取更多信息的URL, http://developer.android.com/reference/android/app/LoaderManager.html
希望这将帮助您解决您的问题。
答
您可以在onPreExecute方法中使用进度对话框,并将其隐藏在doInBackground()方法或查询结束的位置。 希望它有效。