Automatische erneute Abfrage mit LoaderManager

Ich habe eine App, die Daten aus einer SQLite-Datenbank anzeigt, und die Daten ändern sich ständig. Daher dachte ich natürlich, ich sollte einen LoaderManager verwenden, um die Daten anzuzeigen.

lese ich etwas über die Verwendung des LoaderManager mit SQLite und sawAlex Lokwoods Antwort über die Implementierung des CursorLoader und die Verwendung, und ich sah diediese Antwort über die Verwendung eines CursorLoaders direkt in eine SQLite-Datenbank anstelle eines ContentProviders und begann mit der Verwendung von CommonswareLoaderex.

Ich habe diese Klasse erstellt, um die Daten in einer ListView anzuzeigen:

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);
    }
}

Das Problem tritt auf, wenn die Datenbank von einem 'BroadcastListener' geändert wird, während die Aktivität noch ausgeführt wird.

Ich suche im Grunde genommen nach Echtzeit-Beobachtungen der Datenbankänderungen, aber es scheint (auch von derAndroid-Dokumentation dass ich das anrufen mussrestartLoader Funktion, wenn ich die Datenbank erneut abfragen möchte).

Gibt es eine Möglichkeit, die erneute Abfrage hinter den Kulissen zu automatisieren?

AKTUALISIEREN:

Mein erster Gedanke war, eine Funktion zu erstellen, die den Loader neu startet:

public static void restartLoader(Context context){
    context.getSupportLoaderManager().restartLoader(0, null, LandingPageActivity.this);
}

aber es scheint grob und nicht der beste Weg, dies zu tun.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage