Livre-se da maior parte do seu
close() métodos que você está chamando em SQLiteDatabase . Notavelmente, não chame close() no banco de dados passado para você em onCreate() de SQLiteOpenHelper , e não fique abrindo e fechando o banco de dados. SQLiteOpenHelper mantém o banco de dados que você recupera com getReadableDatabase() /getWritableDatabase() , e o objetivo é você reutilizar esse SQLiteDatabase aberto objeto, especialmente quando você trabalha em vários threads.