Skip to main content

Android. Content provider or Database?



Since I've seen a presentation from Google IO I'm a bit confused in the question, if it's better to use content providers or databases. Or it makes no difference if I don't want to share any data with other applications.





If I've understood it right, content providers based on SQLite DBs and it's also possible that content of them is only accessable for my application.





Can you give some explanations?





Thank you very much,





Mur



Source: Tips4all

Comments

  1. IMHO, content providers are solutions in search of worthwhile problems.

    There certainly are worthwhile problems, particularly for cross-process data publishing. For example, you need to use a content provider to supply search suggestions to a Quick Search Box.

    However, for internal use within an application, I am still skeptical. The benefits (e.g., the single threading that Robert mentions) IMHO are outweighed by the costs (e.g., reduced flexibility compared to SQLite and rawQuery()).

    One of these days, I expect that the cartoon light bulb will shine over my head, as I finally figure out what the core Android team was thinking with respect to content providers. That certainly has happened for other areas of Android. At the moment though, the thought balloon over my head is filled with question marks, not light bulbs.

    If you do implement a content provider, bear in mind that they are accessible by other applications by default. You need to include android:exported="false" in the <provider> element to make them private to your app.

    ReplyDelete
  2. Using a content provider will give you a more modular design, and make your life easier if you at some point in future would like to reach the data from other applications.
    If you are certain that the data will only ever be needed from one application, you might as well operate directly on the database.

    There is one particular SQLite limitation you should be aware of and that is that SQLite is single-user only. What this really means is that you will need to guard your database from being accessed from multiple threads at the same time. This is generally not a problem in a content provider, since they almost always have a single-threaded implementation.

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.