TimotheeJeannin/ProviGen

ProviGenProvider uses onCreate() method to initialise database -> causes ANR

pstambrecht opened this issue · 0 comments

ProviGenProvider uses onCreate() method to initialise SQLiteOpenHelper which causes ANR error.

  @Override
    public boolean onCreate() {
        openHelper = openHelper(getContext());
     ...
    }

Due to Android ContentProvider documentation onCreate() method runs on main thread and "It must not perform lengthy operations, or application startup will be delayed." .

From documentation:
"You should defer nontrivial initialization (such as opening, upgrading, and scanning databases) until the content provider is used (via query(Uri, String[], Bundle, CancellationSignal), insert(Uri, ContentValues), etc)."

https://developer.android.com/reference/android/content/ContentProvider#onCreate()

What about to initialise SQLiteOpenHelper lazily from other methods such a query, insert and so on?