我有一个活动,向用户显示上一个活动的结果。我将这些结果保存到数据库中。在我的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");
}
大多数情况下,当我调试列表时,然后在未调试的情况下运行该应用程序时,该列表有时为空/空,并且出现快餐栏消息,并且未保存任何内容,而其他时候则不会出现,并且保存了结果?为什么会这样?
与生命周期有关吗?
编辑:
例如,下面是在调试时填充的列表,此代码将起作用:
由于某些原因,在调试(?)时很难获得此列表而不是Null。