簡體   English   中英

正確地使用onUpgrade(和內容提供者)來處理更新而不阻塞主線程,“ Loader”是否毫無意義?

[英]Correctly using onUpgrade (and content providers) to handle updates without blocking the main thread, are `Loader`s pointless?

這是涉及跨越所謂的“ Hello World Gulf”的問題之一,我在“ Hello world”中可以使用SQLite和內容提供程序(和解析程序),但現在我需要越過另一面,我無法假設onUpgrade將很快。

現在我要讀的書(Wrox,專業的Android 4開發-我沒有選擇它是因為專業,我之所以選擇它是因為Wrox就像指南的O'Reilly-O'Reilly吸吮指南,它們都是參考書)僅簡要介紹了使用Loader的過程,因此我進行了一些搜索,更多的閱讀等等。

我已經基本得出結論, Loader只不過是一個包裝程序,它只是在另一個線程上執行操作,並為您提供了一個回調(在該工作線程上)以處理內容,它為您提供了3個步驟,啟動查詢,使用查詢的結果,並重置查詢。

這似乎很薄,所以問題1:

為什么要使用Loader

我覺得我可能會遺漏一些您看到的東西,如果您使用谷歌的話,大多數類似Android的“實用程序”都非常有用,正如我所說的,Loaders看起來很薄,並且它們迫使我進行回調名稱可能會變得乏味,因為存在多個查詢

http://developer.android.com/reference/android/content/Loader.html

閱讀中指出“他們應該監視數據並根據更改采取行動”-聽起來不錯,但實際上如何實現尚不明確(盡管我正在考慮數據庫表)

介紹

這應該如何改變我的應用程序的外觀? 在創建活動后一定時間后,是否應該放置一個旋轉的東西(我不確定名稱,以前從未用過)? 因此該片段是空白的,但是如果X時間過去了而沒有加載程序報告,我會顯示出一個棘手的東西嗎?

其他作業

裝載程序顯然對更新毫無用處,僅它們的名字就可以說明一個問題,因此任何討厭的更新等都必須由我自己的系統包裝才能將工作分流到工作線程。 這進一步使我想知道為什么還要裝載機?

我認為我的回答是 ,在工作線程上執行某種包裝(某種程度上是從內容提供程序或其他級別),這意味着升級是在該線程上進行的,這解決了問題,因為...主線程。

如果我確實編寫自己的代碼,則可以(如果願意)確保查詢按特定順序發生,使用我自己的數據結構(而不​​是Bundle ),似乎可以更好地控制。

我真正在尋找什么

討論中,我發現當人們知道為什么事情是這樣的時候,犯錯的機會減少了,並且總體上更有信心,我確信Loader的存在是有原因的,並且所有Android都會采用某種模式,我想知道為什么會這樣。

例:

適配器(用於ListViews)並不清楚如何跟蹤行(插入)為什么在大多數時候(以我的經驗,我敢說)它必須是子類,為什么必須指定默認樣式(以及為什么ArrayAdapter使用toString),閱讀源代碼可以使您理解適配器實際必須執行的操作,然后挑戰自己“我可以考慮一個滿足這些要求的(更好的)系統”,通常(並希望)我對此的回答集中在其實際工作上完成。

這樣,“ Hello World Gulf”就越過了。

我期待閱讀有關此問題的答案和任何鏈接的文本牆。

您不應該直接使用Loader,而應該使用LoaderManager

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM