 <p>If I'd had to do that I would try it the following way:</p> <p>add some <code>Uri</code> that when you insert or delete using that <code>Uri</code> triggers database deletion inside your <code>ContentProvider</code>. When deleting also clear all references to the <code>SQLiteDatabase</code> since it is possible that you can still access the old database file through that (If you delete a file in Linux and you have that file open you can still use it - it's just no longer accessible via the path).</p> <p>By putting the deletion inside the <code>ContentProvider</code> you should be able to close the database connection and track the deletion state in a way that you know that you need to recreate the database file.</p> <p><code>ContentProviders</code> don't quit unless you kill your app so you probably have the same instance running and probably references to the old file as mentioned above</p>