Как автоматически повторно запросить с LoaderManager
У меня есть приложение, которое показывает данные из базы данных SQLite, и данные постоянно меняются, поэтому, очевидно, я подумал, что мне следует использовать LoaderManager для отображения данных.
я прочитал немного об использовании LoaderManager с SQLite и увиделАлекс Локвуд ответ о реализации CursorLoader и его использовании, и я увиделэтот ответ об использовании CursorLoader непосредственно в БД SQLite вместо ContentProvider и начал использовать commonsware'sLoaderex.
Я создал этот класс для отображения данных в ListView:
public class LandingPageActivity extends FragmentActivity implements LoaderCallbacks<Cursor> {
ListView list;
SimpleCursorAdapter mAdapter;
private SQLiteCursorLoader loader = null;
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_friends_and_threads);
list = (ListView) findViewById(R.id.list);
mContext = LandingPageActivity.this;
mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null,
new String[] { Properties.Title.columnName }, new int[] { android.R.id.text1 }, 0);
list.setAdapter(mAdapter);
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Context c = mContext;
String query = "SELECT * FROM TABLE_NAME";
SQLiteOpenHelper db = DatabaseHelper.getDatabase();
loader = new SQLiteCursorLoader(c, db, query, null);
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
mAdapter.changeCursor(arg1);
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
mAdapter.changeCursor(null);
}
}
проблема начинается, когда база данных изменяется с BroadcastListener, когда действие все еще выполняется.
в основном то, что я ищу, это в режиме реального времени наблюдать за изменениями базы данных, но, кажется, (также изДокументация Android что мне нужно позвонитьrestartLoader
функция, когда я хочу повторно запросить БД).
Есть ли способ автоматизировать повторный запрос за кулисами?
ОБНОВИТЬ:
Сначала я хотел создать функцию, которая перезапускает загрузчик, примерно так:
public static void restartLoader(Context context){
context.getSupportLoaderManager().restartLoader(0, null, LandingPageActivity.this);
}
но это кажется грубым и не лучшим способом сделать это.