W mojej aplikacji mam ContentProvider dołączony do tabeli w bazie danych z CursorLoader, który wypełnia ListView w jednym z moich działań. Ta tabela jest wypełniona domyślnie i wypełniona danymi wejściowymi użytkownika. Chcę zezwolić użytkownikowi na całkowite usunięcie wszystkich przechowywanych danych i usuwam całą bazę danych po wybraniu tej opcji. Baza danych jest następnie odtwarzana w jej domyślnym stanie, gdy użytkownik ponownie zaczyna korzystać z aplikacji, tak jak przy pierwszym użyciu aplikacji.Jak zmusić dostawcę treści do zresetowania podczas ręcznego usuwania bazy danych
Mój problem jest, gdy usuwam bazę danych, ContentProvider nie wykrywa, że baza danych została usunięta i kiedy wracam do mojej aktywności listview, lista nadal tam jest. Sprawiam też, że aplikacja całkowicie przeładuje działanie ListView, zamiast tylko wznawiać pracę z pamięci, a lista wciąż istnieje, nawet jeśli baza danych jest pusta. Jedynym sposobem na przeładowanie ContentProvider jest zabicie aplikacji w ustawieniach systemowych, a następnie ponowne jej otwarcie.
Czy istnieje sposób na ponowne uruchomienie obiektu ContentProvider lub poinformowanie go, że dane zostały zaktualizowane spoza klasy ContentProvider?
Tak, to co robię. Problem polega na tym, że ContentProvider jest dołączony tylko do jednej tabeli mojej bazy danych, a oddzielna Aktywność, która nie używa dostawcy, usuwa całą bazę danych, gdy użytkownik chce przejść przez getApplicationContext(). DeleteDatabase (myDb). Czy istnieje sposób wysłania wyzwalacza do dostawcy, aby ponownie uruchomić/odświeżyć go, gdy nie mam bezpośredniego dostępu do contentResolver? Obecnie używam metody delete w moim dostawcy, aby usunąć pojedyncze wiersze z tabeli, która jest używana dla mojego listview/cursoradapter, jak sugerujesz. – wynalazca
Jeśli używasz programu ładującego do załadowania listy, możesz również po prostu wywołać ponowne uruchomienie w programie ładującym zaraz po usunięciu bazy danych – wangyif2
Czy rozwiązałeś ten problem? Czy próbowałeś podejścia do ładowarki? – wangyif2