數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級、企業(yè)上云解決方案服務(wù)商
工單提交 實名認(rèn)證 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

如何優(yōu)化Android服務(wù)器數(shù)據(jù)異步請求?

發(fā)布時間:2022-07-15 作者:admin

簡述:在互聯(lián)網(wǎng)驅(qū)動的世界中,移動應(yīng)用程序需要共享和接收來自其產(chǎn)品的后端(例如,來自數(shù)據(jù)庫)以及來自第三方來源(如Facebook和Twitter)的信息,這些交互通常通過RESTfulAPI進(jìn)行。當(dāng)請求數(shù)量增加時,這些請求的生成方式對于開發(fā)變得非

在互聯(lián)網(wǎng)驅(qū)動的世界里,移動應(yīng)用程序需要共享和接收來自其產(chǎn)品的后端數(shù)據(jù)庫)和第三方來源(如Facebook和Twitter)這些交互通常通過RESTfulAPI進(jìn)行。當(dāng)請求數(shù)量增加時,這些請求的生成對開發(fā)至關(guān)重要,因為獲取數(shù)據(jù)的方式確實會影響應(yīng)用程序的用戶體驗。

同步請求行為在服務(wù)器響應(yīng)前保持空閑,同步請求將防止界面增加計算時間,并使移動應(yīng)用程序無響應(yīng)。因此,當(dāng)客戶端向服務(wù)器發(fā)出請求時,服務(wù)器將請求分配給事件處理程序,注冊回調(diào)并繼續(xù)執(zhí)行下一個請求,并在響應(yīng)可用時響應(yīng)客戶端。這是一種更好的方法,因為異步請求允許獨(dú)立執(zhí)行任務(wù)。

上圖顯示了客戶端-服務(wù)器模型中兩種編程方法的區(qū)別。Android中,UI基于與異步編程相同的原理,線程(通常稱為主線程)。

AndroidUI如果工作線程(執(zhí)行網(wǎng)絡(luò)調(diào)用任務(wù))更新,工具包不是線程安全的。AndroidUI工具包,可能會導(dǎo)致未定義和意外的行為,跟蹤可能是困難和耗時的。保證單線程模型UI不同的線程不會同時修改,因此,如果我們使用來自網(wǎng)絡(luò)的圖像更新ImageView,工作線程將在單獨(dú)的線程中執(zhí)行網(wǎng)絡(luò)操作,ImageView將由UI線程更新可以保證操作安全。UI它還有助于線程提供必要的同步UI由于實際任務(wù)發(fā)生在工作線程的后臺,線程始終是非阻塞的。

總之,請遵循Android開發(fā)中的兩個簡單規(guī)則:

不應(yīng)阻止UI線程。

不應(yīng)從非UI直接更新工作線程UI工具包。

在Android如果您需要在用戶與應(yīng)用程序交互時執(zhí)行主線程以外的工作,最好使用它AsyncTask或Volley等網(wǎng)絡(luò)庫。

以下是使用AsyncTask實現(xiàn)異步工作線程的方法:

SubclassAsyncTask實現(xiàn)該onPreExecute()方法,它將創(chuàng)建一個toast新聞表明網(wǎng)絡(luò)調(diào)用即將發(fā)生。

實施doInBackground(Params...)方法,顧名思義,doInBackground網(wǎng)絡(luò)調(diào)用工作線程,保持主線程免費(fèi)。

工作線程無法直接更新UI,所以我實現(xiàn)了自己postExecute(Result)方法,該方法將從網(wǎng)絡(luò)調(diào)用中提供結(jié)果并在UI為了安全修改用戶界面,在線程中運(yùn)行。

可以使用后臺任務(wù)的進(jìn)度publishProgress()該方法從工作線程發(fā)布并可用onProgressUpdate(Progress...)方法在UI線程上更新。

最后,使用execute()UI調(diào)用異步任務(wù)的方法。

讓我們進(jìn)一步理解Volley:

Volley運(yùn)行緩存處理線程和網(wǎng)絡(luò)分配線程池。

緩存線程首先對網(wǎng)絡(luò)調(diào)用請求進(jìn)行分類。如果緩存可以提供響應(yīng),緩存響應(yīng)將被分析CacheDispatche并將其傳回主線程UI線程。

如果結(jié)果不能用于緩存,則需要網(wǎng)絡(luò)請求以獲取所需的數(shù)據(jù),請求將被放入網(wǎng)絡(luò)隊列中。

第一個可用的網(wǎng)絡(luò)線程(NetworkDispatcher)從隊列中獲取請求,然后,它執(zhí)行HTTP請求,分析工作線程上的響應(yīng),并將響應(yīng)寫入緩存。然后將分析后的響應(yīng)傳回主線程。

總結(jié):

Android中的UI將事件分配給線程或主線程執(zhí)行UI工具包的工作負(fù)責(zé)列出消息隊列中的請求,通知窗口的小部件進(jìn)行操作,這就是為什么UI線程始終是非阻塞的重要性。

Android有自己的HTTP客戶端庫,例如HttpURLConnection它可以幫助您同步調(diào)用網(wǎng)絡(luò)。為了保持主線程不堵塞,需要在后臺運(yùn)行的工作線程中進(jìn)行網(wǎng)絡(luò)調(diào)用。

Android的AsyncTask庫可以幫助在后臺操作任務(wù),并確保主線程是非堵塞。它還確保后臺任務(wù)不會直接更新UI,相反,它返回結(jié)果UI線程。

AsyncTask有其局限性,如無法緩存響應(yīng)和處理平行請求,當(dāng)后臺任務(wù)運(yùn)行時,無法正常處理屏幕旋轉(zhuǎn)等場景。

使用Volley開發(fā)異步網(wǎng)絡(luò)調(diào)用Android更簡潔的解決方案,Volley有一系列強(qiáng)大的功能,如緩存、請求取消和優(yōu)先級排序。

Volley可以處理各種請求類型,如JSON,與比較圖像和文本,AsyncTask表現(xiàn)更好。

騰佑科技是國內(nèi)為數(shù)不多的擁有多個海外自建機(jī)房的新型機(jī)房之一IDC被業(yè)界公認(rèn)為服務(wù)提供商“中國IDC行業(yè)首選品牌”。騰佑科技直接與全球近120個國家的頂級機(jī)房合作,提供傳統(tǒng)機(jī)房IDC除產(chǎn)品外,騰友科技的主要職責(zé)是為大中型企業(yè)提供更精細(xì)、安全、滿足個性化需求的定制大數(shù)據(jù)解決方案,特別是在直銷、金融、視頻、流媒體、游戲、電子商務(wù)、區(qū)塊鏈、快速消費(fèi)品等行業(yè),為客戶解決海外服務(wù)器租賃中遇到的各種問題。

點擊展開全文

騰佑科技(m.mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個國家版權(quán)局認(rèn)證。公司自成立以來,一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門活動

百度云服務(wù)中心
  • 熱門資訊
  • 隨便看看