Używam ContentProvider w mojej aplikacji i wszystko działa świetnie, z wyjątkiem jednego małego problemu. Mam funkcję kopii zapasowej i przywracania, która tworzy kopię zapasową bazy danych do pliku na karcie SD, a następnie te pliki kopii zapasowych można przywrócić, aby nadpisać bieżącą bazę danych. Cały ten proces działa, ale ContentProvider nadal przechowuje referencje/cache do oryginalnej bazy danych po przywróceniu jednego ze starych plików kopii zapasowej. Nie mogę znaleźć sposobu na odświeżenie lub ponowne załadowanie odwołania do bazy danych w ContentProvider. Wiem, że przywracanie działa, ponieważ widzę rekordy w db z edytorem SQLite i kiedy zamykam i ponownie otwieram aplikację, wyświetla ona poprawne rekordy.Odśwież/wczytaj odniesienie do bazy danych w niestandardowym narzędziu ContentProvider po odtworzeniu.
Czy ktoś wie, jak to zrobić? Czy istnieje sposób zamknięcia i ponownego otwarcia ContentProvider, którego nie widzę?
jestem coraz odwołanie od pomocnika w onCreate 'db = new dbAdapter (getContext());'. Oto, co pokazują wszystkie przykłady. Myślałem o zrobieniu tego w każdej z metod, ale wydaje mi się to bardzo nieefektywne i powolne. Nie sądzisz? Cóż, myślę, że spróbuję w ten sposób i zobaczę jak to działa. Czy to nie pozostawi zbyt wielu otwartych obiektów db, jeśli mam wiele zapytań/aktualizacji lub czy ContentProvider będzie je odpowiednio zarządzać? – ssuperz28
Zobacz, jak dostawcy systemu, jak np. AlarmProvider, robią przykład tego, co mówię. Uzyskiwanie pomocnika onCreate(), a następnie, w razie potrzeby, typu db. ContentProvider zarządza dostępem do żądania, jest to jeden z powodów, aby z niego skorzystać. Tak właśnie buduję swoich dostawców: http://codesearch.google.com/#cZwlSNS7aEw/packages/apps/DeskClock/src/com/android/deskclock/AlarmProvider.java&exact_package=android – Devunwired
Ahhh ... Rozumiem. Właściwie używam klasy dbadapter, która mieści mojego pomocnika i otwiera bazę danych. Przeprowadzam migrację z aplikacji API v7, aby użyć nowej biblioteki zgodności. Oddzielę pomocnika i spróbuję w ten sposób.Chyba po prostu nie zdawałem sobie sprawy, że powinienem był dzwonić do pomocnika, więc pomyślałem, że poprawnie stosuję się do przykładów. Doh! Dzięki! – ssuperz28