Not quite right. Please see my long answer here:
What are the best practices for SQLite on Android?
You will not damage your database, but if two different streams, with two different connections, try to write to db at the same time, you will have problems. One will lose. They will not wait to be put in order. If you call "insert" instead of "insertOrThrow", you will not even get an exception. You simply will not write to the database.
This is how Sqlite works in Android. Each instance of SqliteOpenHelper has 1 database connection. It doesn't matter how many times you call "getRead / WriteableDatabase". One assistant, one connection. In addition, the sqlite connection code for Android implements its own thread blocking, so if you use the same SqliteOpenHelper, and, by extension, the same connection, you will be fine.
If, however, you use more than one assistant, you may be in poor condition.
I suspect that you may have multiple read streams, and 1 write, and exit OK, but I have not tested this.
Do you use multiple threads for recording performance? If so, I would suggest simply optimizing the use of "transactions." If you make several independent recordings, it is very slow. If you complete them all in batch mode, it will be very fast (relatively). I suspect that this is due to the fact that with each self-recording Android is flushed to disk (which is very slow). If you do them together, all changes are made in 1 record.
As for maintaining 1 sub instance, here's a recent post from my blog about it:
http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection
I wrote a pretty complicated link counting logic as part of my early implementation of the OrmLite Android port, but I don’t think that all this is necessary at the moment.
http://touchlabblog.tumblr.com/post/24474455802/ormlite-for-android
For completeness of links, my blog post about sqlite blocking and multiple connections:
http://touchlabblog.tumblr.com/post/24474398246/android-sqlite-locking