2016-09-06 36 views
1

我正在開發一個帶有使用Android Cursor的sqlite數據庫的測驗應用程序。現在用戶可以在問題之間跳轉。如果他進入下一個問題,我將調用cursor.moveToNext(),否則cursor.moveToPrevious。在每次「跳躍」時,我都用數據庫的數據填充對象(問題,答案,圖片,類別)。現在我想創建一個包含所有必需數據的測驗對象,並將其放入HashMap中。一個HashMap,其Cursor位置爲鍵,測驗對象爲值。所以我不必在每次跳躍時都從數據庫中讀取數據。另外它會避免多次創建對象。Android - 將光標數據放在HashMap中以加快數據檢索速度

它有道理嗎?

+0

您應該以兩種方式實施您的應用程序,並測試您是否獲得了性能改進。 –

回答

2

根據Common's WareCursor將數據緩存到內存中。這意味着您的應用程序不會直接從數據庫中讀取每個cursor.moveToNext()。因此,我認爲你不需要HashMap。另一方面,QuestionQuiz類可以將數據傳遞給每個需要使用它的方法。

+0

謝謝。我已經有一個問題,答案,圖片和信息對象。我不喜歡的是,我總是在每次跳躍時創建新的對象。所以我想將這些對象放在一個HashMap中。 –

+0

@DenoAgüero我不知道您是否在應用程序啓動時立即在HashMap中創建所有對象。如果你沒有考慮到它,更復雜的方法可以懶惰地創建對象。如果已經創建了對象,則通過檢查「HashMap」來完成此操作,否則,創建它。 –

+0

這是我的問題。如果將我的對象存儲在HashMap中是有意義的,或者對於內存使用情況來說是不好的。這是比我目前的解決方案(創建新的對象)更好的方式。 –

1

光標不會對每個跳轉進行查詢。它也是數據的容器,比如地圖。從數據庫獲取數據然後填充地圖對我來說看起來不像是一個優化的解決方案。我仍然想要在光標上工作並獲取數據。

+0

好的,但你認爲這是一個很好的解決方案,我總是在每次跳躍時創建新的對象?我對此不滿意。 –

+0

然後不要創建對象,直接保存遊標列索引和查詢遊標數據。 –