2013-10-11 61 views
2

我想在同一個活動中支持2+加載器。使用第一個參數loaderId來切換不同的加載器。對於SharedPreferencesLoader,只需創建一個從Loader.CallBack繼承的字段對象並將其作爲LoadManager initLoader方法的最後一個參數傳遞。問題是:擁有SharedPreferencesLoader而不是系統默認是否真的值得?任何證據證明其用途?真的值得擁有SharedPreferencesLoader而不是系統默認值嗎?

回答

0

什麼是SharedPreferencesLoader?你自己寫了這個嗎?沒有理由擁有用於訪問SharedPreferences的異步加載器。

+0

「什麼是SharedPreferencesLoader?」 - 見https://github.com/commonsguy/cwac-loaderex。 「你自己寫了這個嗎?」 - 不,我做了。 「沒有理由擁有用於訪問SharedPreferences的異步加載器」 - 最初,當您首次引用'SharedPreferences'時,會在當前線程上執行磁盤I/O。現在,雖然它分叉了一個線程,但當您首次嘗試從首選項中讀取/寫入時,仍然會阻止當前線程,因爲'SharedPreferences' API不是在寫入時考慮到異步加載。 – CommonsWare

+0

因此,您仍然可以阻止等待磁盤I/O完成的主應用程序線程。可以肯定的是,使用'Loader'是矯枉過正的,但是由於'SharedPreferences' API沒有給我們任何'OnLoadCompletionListener',所以我們所做的任何事情都可以避免阻塞主應用程序線程。如果你有更好的模式,請把它寫在某個地方。 – CommonsWare