В моем приложении для Android я использую Room как локальную базу данных, но кажется, что запросы дают другой результат после переключения с одного фрагмента на другой.
Я только что попытался найти проблему на данный момент, и, похоже, я нашел ее здесь, в моем DAO.
@Query("SELECT DISTINCT sender FROM messages_table WHERE receiver=:id and sender NOT IN (SELECT id FROM users_table WHERE id IN (SELECT DISTINCT followee FROM follows_table WHERE follower=:id) AND name LIKE '|%%' ESCAPE '|')")
List<String> getSenderFromID(String id);
@Query("SELECT DISTINCT receiver FROM messages_table WHERE sender=:id and receiver NOT IN (SELECT id FROM users_table WHERE id IN (SELECT DISTINCT followee FROM follows_table WHERE follower=:id) AND name LIKE '|%%' ESCAPE '|')")
List<String> getReceiverFromID(String id);
Исходя из вышеизложенного, я ожидаю всегда получать идентификаторы отправителей и получателей (сообщений), которые не связаны с пользовательскими объектами с именем, начинающимся с%. Это сделано для того, чтобы я мог отделить тех, чье имя начинается с%, от тех, у кого нет (для двух разных ListViews).
Я получаю нужный результат при первом открытии фрагмента, но когда я затем переключаюсь на другой фрагмент и возвращаюсь, он показывает как те, что с%, так и те, которые отсутствуют в том же ListView. Затем после переключения фрагментов снова возвращается к ожидаемому результату.