[Android] AsyncTaskLoader vs AsyncTask


Answers

當比較AsyncTaskLoaderAsyncTask時 ,您可能會知道何時旋轉設備屏幕,它可能會破壞並重新創建您的活動,以便在網絡交易正在進行時讓圖像旋轉您的設備:

AsyncTask會再次作為後台線程執行,而前一個後台線程處理只是多餘的殭屍。

AsyncTaskLoader只會基於在Loader Manager中註冊的Loader ID重新使用,因此請避免重新執行網絡事務。

總之, AsyncTaskLoader防止後台線程的重複並消除殭屍活動的重複。

Question

由於Honeycombv4 Compatibility Library可以使用AsyncTaskLoader 。 據我所知, AsyncTaskLoader可以通過像屏幕翻轉之類的配置更改而生存下來。

建議使用AsyncTaskLoader而不是AsyncTaskLoaderManager是否也在圖片中?

但是我還沒有找到任何關於如何正確使用AsyncTaskLoader好例子。 文檔也沒有提供任何示例。 誰能提供一些很好的例子。




除了其他答案中描述的一些差異:

通過AsyncTask使用AsyncTaskLoader時:

  • AsyncTaskLoader使我們可以自由地加載舊的緩存數據,直到forceLoad()返回新數據

  • 我們可以通過setUpdateThrottle()來設置AsyncTaskLoader的延遲,這可以防止客戶端的連續更新(Activity / Fragment)

  • 如果AsyncTaskLoader具有共同的父活動,並且它是從getActivity().getSupportLoaderManager()開始的,則它可以共享到多個片段getActivity().getSupportLoaderManager()

  • LoaderManger的鏈接活動不再可用時, AsyncTaskLoader將被銷毀。 而我們需要手動銷毀AsyncTasks,如果其調用者的活動破壞。 這節省了我們編寫所有結算資料的時間。 AsyncTaskLoader在各自的生命週期中表現良好。

所以,AsyncTaskLoader比AsyncTask更好。