It doesn't seem bad to me at all.

Note that getLocalContentProvider is API level 5.

If this was my code, I'd take advantage of the provider being local, and keep a reference to "the" database somewhere (in a static variable). The provider would use this static to access the database.

In the update code, I'd get the database from the static, and do the close/copy/open song-and-dance with it.

That way, the content provider would run "on top of" the database "layer", not the other way around. But that's really just architectural nitpicking :)

-- Kostya

07.08.2011 20:22, CocoRambo пишет:
I finally find a solution but I am not proud of it...

My mistake was that I called close() on the wrong SQLiteOpenHelper.
So I add a public method to my ContentProvider to get his SQLiteOpenHelper...
Next during update I do this:

MyContentProvider cp = (MyContentProvider) context.getContentResolver()
.acquireContentProviderClient(CONTENT_URI)
.getLocalContentProvider();
if (cp != null) {
cp.getOpenHelper().close();
}


Is there any clean way to do that? (Except your intelligent merge solution)
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
Kostya Vasilyev

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to