Como o CursorLoader atualiza automaticamente a exibição mesmo se o aplicativo estiver inativo?

Eu tenho trabalhado em um pequeno aplicativo de lista de tarefas. Eu usei o CursorLoader para atualizar o ToDolistview de um provedor de conteúdo. Eu escrevi uma funçãoonNewItemAdded(), que é chamado quando o usuário digita um novo item na exibição de texto e clica em entrar. Veja abaixo:

public void onNewItemAdded(String newItem) {
    ContentResolver cr = getContentResolver();

    ContentValues values = new ContentValues();
    values.put(ToDoContentProvider.KEY_TASK, newItem);

    cr.insert(ToDoContentProvider.CONTENT_URI, values);
    // getLoaderManager().restartLoader(0, null, this); // commented for the sake of testing
}

@Override
protected void onResume() {
    super.onResume();
    //getLoaderManager().restartLoader(0, null, this); // commented for the sake of testing
}

public Loader<Cursor> onCreateLoader(int id, Bundle args) {

    CursorLoader loader = new CursorLoader(this,
            ToDoContentProvider.CONTENT_URI, null, null, null, null);
    Log.e("GOPAL", "In the onCreateLoader");
    return loader;
}

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

    int keyTaskIndex = cursor.getColumnIndexOrThrow(ToDoContentProvider.KEY_TASK);
    Log.e("GOPAL", "In the onLoadFinished");
    todoItems.clear();
    if (cursor.moveToNext() == false) Log.e("GOPAL", "Empty Cursor");
    else {
        while (cursor.moveToNext()) {
            ToDoItem newItem = new ToDoItem(cursor.getString(keyTaskIndex));
            todoItems.add(newItem);
        }
        aa.notifyDataSetChanged(); // aa is arrayadapter used for the listview
    }
}

Eu li, CursorLoader atualiza automaticamente a visão, sempre que houver uma alteração de dados no provedor de conteúdo db. Isso significa que eu suponhogetLoaderManager().restartLoader(0, null, this) tem que ser chamado implicitamente sempre que houver uma mudança nos dados, certo? Mas isso não está acontecendo. Sempre que eu adiciono um novo item (o item é adicionado ao banco de dados deonNewItemAdded, mas restartLoader não é explicitamente chamado), pause essa atividade e retome-a novamente. Não vejo nenhuma chamada implícita para restartLoader (mesmo que o db seja alterado) e o listview também não é atualizado com o novo item adicionado. Por que é que? Como umCursorLoader atualiza automaticamente a exibição mesmo se o aplicativo não estiver ativo ??? Obrigado :)

EDIT: eu também useigetContext().getContentResolver().notifyChange(insertedId, null) na inserção do meu provedor de conteúdo.

questionAnswers(3)

yourAnswerToTheQuestion