6
votes

Différence entre RedArtharlloader et OnContentChanged

Actuellement, j'ai un chargeur xxx pré>

parfois, je dois demander au chargeur de recharger à nouveau, en raison des changements de contenu. Je ferai cela. P>

this.getLoaderManager().restartLoader(0, bundle, this);


0 commentaires

3 Réponses :


4
votes

Je pense, la principale différence est que la méthode redémarreur détruit l'ancien chargeur qui a le même identifiant et démarre un nouveau lorsque la méthode oncontentchanged force le chargeur charger ( Forceload ) ou définit simplement un drapeau indiquant que le contenu a changé lorsque le chargeur a été arrêté. Dans le second cas, le «propriétaire» du chargeur reste responsable de son chargement (re) après que le contenu a changé. Je suppose que cela se fait automatiquement par le loadermanager comme dans le boîtier RedStartRerner .

Si vous décidez d'utiliser la méthode redémarreur , vous devez garder à l'esprit la destruction de l'ancien chargeur et les implications possibles pour votre application, telles que les re-initialisations lentes, etc.

Vous pouvez jeter un coup d'œil à la documentation méthodes pour plus d'informations - restartharger et OnContentChanged

Notez également que l'ancien chargeur est détruit quand le nouveau termine son travail


0 commentaires

0
votes

Call redémarreur code> Chaque fois que vous souhaitez des données fraîches ou que vous souhaitez modifier vos arguments pour le curseur.

Si vous utilisez initloader code> pour charger des données p> xxx pré>

chaque appel à initloader code> renvoie le même curseur sur Onloadfinished code>. La méthode code> oncreateloader code> ne sera appelée que sur le 1er appel à initloader. Par conséquent, vous ne pouvez pas changer la requête. Vous obtenez le même curseur les mêmes données sur la méthode Onloadfinished code>. P>

@Override
public android.support.v4.content.Loader<Cursor> onCreateLoader(int id,
        Bundle args) {

    android.support.v4.content.Loader<Cursor> ret = null;

    // Create a new CursorLoader with the following query parameters.
    switch (id) {

    // load the entire list
    case LOADER_ID_LIST:
        String sortOrder = null;
        switch (mSortOrder) {
        case 0:
            sortOrder = RidesDatabaseHandler.KEY_DATE_UPDATE + " desc";
            break;
        case 1:
            sortOrder = RidesDatabaseHandler.KEY_ID + " desc";
            break;
        case 2:
            sortOrder = RidesDatabaseHandler.KEY_NAME;
        }
        return new CursorLoader(context, RidesDatabaseProvider.CONTENT_URI,
                PROJECTION, null, null, sortOrder);

        // load a single item
    case LOADER_ID_ENTRY:
        sortOrder = null;
        String where = RidesDatabaseHandler.KEY_ID + "=?";

        String[] whereArgs = new String[] { Integer.toString(lastshownitem) };

        return new CursorLoader(context, RidesDatabaseProvider.CONTENT_URI,
                PROJECTION, where, whereArgs, null);
    }
    return ret;
}


0 commentaires

1
votes

Le diagramme d'état devrait aider à comprendre comment utiliser API. Première fois, j'ai aussi passé beaucoup de minutes pour faire clairement la photo. Utilisez mon travail!

Article: https://plus.google.com/117981280628062796190/posts/8b9rmqvxudb

Schéma des états de chargeur


0 commentaires