После очистки данных приложения один объект пользователя остается в базе данных Room - PullRequest
0 голосов
/ 12 октября 2019

У меня есть следующие методы в MainActivity -

private ArrayList<User> usersList;
@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fetchUserList();
  }

  private void fetchUserList() {
    userViewModel = ViewModelProviders.of(this).get(UserViewModel.class);
    final Observer<List<User>> userObserver = users -> {
      usersList = (ArrayList) users;
      initViewsAndListeners();
      addCards();
    };
    userViewModel.getAllUsers().observe(this, userObserver);
  }

Проблема, с которой я сталкиваюсь, заключается в том, что когда я перехожу к настройкам приложения и очищаю данные приложения, он оставляет одного (последнего) пользователямассив в памяти, и по некоторым причинам обратный вызов вызывается дважды, а не один раз. Это означает, что после очистки данных приложения я получаю еще одну итерацию метода addCards(), и добавляются карты, которые не следует добавлять. Почему это случилось? не очистка данных приложения убивает все? почему он оставляет один элемент в массиве?

Кстати, моя комнатная база данных добавляет 3 жестко закодированных объекта пользователя.

edit -

вот мой addCards() метод -

@Override
  public void onClick(View view) {
    int buttonTag = Integer.valueOf(String.valueOf(view.getTag()));
    TinderCardView topCardOnStack = tinderStackLayout.getTopCardOnStack();
    topCardOnStack.handleButtonPressed(buttonTag);
  }
...