Нелегко сказать, исходя из того, что мало мы знаем.Единственное, что может вызвать ваше поведение, это то, что если этот раздел вашего кода:
//Code for to get data from 10 tables
Когда-нибудь вернет курсор на значение по умолчанию, тогда он не будет ждать вашего блока finally.Любой работающий поток может также изменить его обратно - Курсор не для каждого потока, и он не подсчитывает ссылки.
В качестве дополнительного наблюдения, получение группы данных в обработчике кликов - особенно когдаДостаточно времени, чтобы оправдать ожидание курсора - не очень хорошая практика.Даже если мы не будем рассматривать разделение интересов (которого, вероятно, нет в этом коде), весь пользовательский интерфейс будет казаться «заблокированным» для пользователя.Вам гораздо удобнее получать данные в фоновом потоке и сигнализировать о пользовательском интерфейсе, когда это будет сделано, чтобы он мог выполнять заполнение пользовательского интерфейса в этот момент.