0

我的AsyncTask用於提取數據是一個很長的過程,同時在構建我的recyclerview時我想檢查一下cursorloader是否能夠正確查詢我的內容提供者。AsyncTask and CursorLoader [Android]

忍着我在這裏,我用裝載機回調interfaceonLoadFinished得到結果。由於asynctask仍在運行,裝載程序在更新時仍會調用內容提供程序,直到asynctask結束。我除了因爲onLoadFinished主要涉及用光標數據填寫adapter的內容,我不必擔心它會在asynctask繼續運行時同時打印日誌語句,但我想確認一下。

我確實打算最終將此asynctask轉換爲僅通過broadcast調用的intentservice

+0

我,說實話,真的不明白你想要什麼。你想稍後得到結果嗎? –

+0

另外,請添加一些你試過的代碼。我無法幫助如果我幾乎不明白這個問題和兩個問題,如果我沒有看到任何嘗試。 –

+0

道歉,我在匆忙地寫下這個問題之前,一邊想自己一邊睡覺。我有代碼,但長話短說,asynctask正在運行並插入到我的內容提供程序中,而當新數據流入時,遊標加載器不斷刷新,直到完成asynctask。因爲只有當程序第一次啓動時纔會發生這種情況,它會在我執行它時最終影響我的UI和Recycler View加載行。 – kthieu

回答

0

你可以調用getLoaderManager().restartLoader(URL_LOADER, null, HomeFragment.this);來重新啓動加載器對你的AsyncTask onPostExecute方法。您需要首先啓動加載程序,方法爲onCreate()

這樣,加載程序將使用它在啓動時的相同投影進行刷新,並將從數據庫中獲取AsyncTask操作的結果。

+0

似乎是正確的方法,但我可能需要找到一種方法來從我的asynctask中調用LoaderManager,它位於一個單獨的文件中。 你做了一個很好的猜測,沒有給我的代碼片段實現加載回調方法。我在幾秒鐘之前發佈了這篇文章,然後我去睡覺去思考它。 – kthieu

+0

@kthieu你可以使用EventBus,Otto或任何其他面向該purpouse的面向事件的庫。 – axierjhtjz