Если ваш AsyncTask
управляется вашим Activity
, то Activity
может отменить AsyncTask
в надлежащее время (когда он становится уязвимым для того, чтобы быть убитым ОС, например, после Activity.onPause()
), поэтому AsyncTask.onCancelled()
будет быть вызванным там, где вы можете закрыть БД.
Если ваш AsyncTask
(или Thread
) не управляется вашим Activity
, то у вас проблемы, и вам следует подумать о перестройке вашей архитектуры.