I was looking for a solution for making my slqite database, accessing syncronized and avoid problem with open/close connection, and I falled in this good answer:
In this solution, however, there is not a explicit closing of database. many argue that this is not a problem, but I would know how can I close the connection after the application is stopped.
note: In the aforementioned link the author of the answer suggest this:
With my implementation the singleton lives for the life of the application. Therefore I did not implement an explicit destructor, instead, in the app shutdown code (or crash handler) the database is explicitly closed. See Thread.setDefaultUncaughtExceptionHandler() which I used in ApplicationContext.onCreate() after I posted my sample code.
Can be this a good solution? If yes, how can I manage Thread.setDefaultUncaughtExceptionHandler() ?
EDIT:
I want also, that if the database resource is not available, the requiring thread will wait until the database is released. Can I use this code? the isDbLockedByOtherThreads() is deprecated
private myDatabase(){
        final DbHelper mDbHelper =new DbHelper(ApplicationFramework.getContext());   
        mDB = mDbHelper.getWritableDatabase();
        while(mDB.isDbLockedByCurrentThread() || mDB.isDbLockedByOtherThreads()) {
            //db is locked, keep looping
        }
    }
 
     
    