为什么此列表有时为null,有时为null?

时间:2019-05-17 14:30:18

标签: java android list

我有一个活动,向用户显示上一个活动的结果。我将这些结果保存到数据库中。在我的onCreate方法中,创建对ViewModel的引用并填充一个List。

 mAtcViewModel = new AtcViewModel(getApplication());
 atcUserStatsList = mAtcViewModel.getAllUsersList();

然后我在分配后继续调用保存到数据库方法:

 private void saveToDB(String playerName) {
    mUser = playerName;

    getAtcUser getAtcUser = new getAtcUser(playerName, this);
    getAtcUser.delegate = this;
    getAtcUser.execute();
  }

当我从onPostExecute获得结果时,此方法称为:

@Override
public void processFinish(AtcUserStats atc_user) {

    callOnChanged(atc_user);

}

这然后调用一种方法,使我能够查看用户以前存储的结果,并根据他们的新结果对其进行调整,但是在此代码块中,仅有时会出现问题,说atcUserStatsList为空:

 try {
        for (int i = 0; i < atcUserStatsList.size(); i++) {
            if (atcUserStatsList.get(i).getUserName().equals(mUser)) {
                mAtcViewModel.updateAtcPlayerStats(mUser, finalDartsHit, finalGamesWon, finalGamesPlayed, finalSinglesPlayed, finalDoublesPlayed, finalTreblesPlayed, finalDartsThrown,
                        finalSinglesDartsThrown, finalDoublesDartsThrown, finalTreblesDartsThrown, finalSinglesDartsHit, finalDoublesDartsHit, finalTreblesDartsHit, finalSecondPlace, finalThirdPlace);
            }
        }
    } catch (Execption e) {
        e.printStackTrace();
        Log.d("atcUserStatsList", "Unable to save to database");
        getMessage("Unable to save to database");
    }

大多数情况下,当我调试列表时,然后在未调试的情况下运行该应用程序时,该列表有时为空/空,并且出现快餐栏消息,并且未保存任何内容,而其他时候则不会出现,并且保存了结果?为什么会这样?

与生命周期有关吗?

编辑:

例如,下面是在调试时填充的列表,此代码将起作用:

enter image description here

由于某些原因,在调试(?)时很难获得此列表而不是Null。

0 个答案:

没有答案