導航:首頁 > 操作系統 > android什麼是非同步

android什麼是非同步

發布時間:2022-11-06 05:28:46

A. 我想了解android http請求 同步與非同步的區別

給你舉一個例子,點擊按鈕執行HTTP請求然後跳轉下一頁。
同步:發送http請求→獲取返回結果→分析結果→跳轉下一頁
非同步:發送http請求→跳轉下一頁(不需要等待請求結果,對結果的處理在另一個線程中)

B. 在Android中什麼是非同步執行

我來給你講解一下非同步的使用吧,
如果你不是開發人員,直接跳到第三,非同步的概念 和 同步的區別:
一、在你的Activity中寫一個內部類:
private class TestAsyncTask extends AsyncTask<String, Void, Boolean>
{
@Override
protected void onPreExecute()
{
//最先執行的就是這個。
}

@Override
protected Boolean doInBackground(String... params)
{
//這個是在後台執行的東西,就是說,它自動另外開了個線程運行,不影響你現在做的東西。
}

@Override
protected void onPostExecute(Boolean result)
{
if (result)
{
//後台執行的完畢後,它會用Result通知這里,就是執行這里了。
}
else
{
//所以最好判斷一下result,寫個else,判斷後台執行的東西是不是出問題了。
}
}
}

二,在你的onCreate的時候啟動這個非同步,啟動代碼如下:
new TestAsyncTask().execute("");

三,非同步 和 同步的區別
非同步的好處,就是把一些東西,特別是耗時間的東西扔到後台去運行了,doInBackground,程序可以繼續做自己的事情,防止程序卡在那裡失去響應。
同步執行的話,就是程序會呆板地從頭執行到尾,耗時間的東西不執行完,程序不會繼續往下走,等待時間長的話,有時候就會造成失去響應了。

我就是搞開發的,呵呵。我的代碼你直接貼進去就能用的。打字貼代碼辛苦啊~~望採納。也歡迎追問

C. android 非同步方法和子線程方法有什麼區別

子線程沒有控制並發數量,當並發過多的時候非同步方法的作用就體現出來了。

非同步是相對於同步而言的,顧名思義,同步就是各個通訊節點之間有統一的時鍾,按照相同的時鍾工作,非同步相反,各節點之間沒有統一的時鍾,每個節點按照自己內部的時鍾工作。
android在所有Thread當中,有一個Thread,我們稱之為UI Thread。UI
Thread在Android程序運行的時候就被創建,是一個Process當中的主線程Main
Thread,主要是負責控制UI界面的顯示、更新和控制項交互。在Android程序創建之初,一個Process呈現的是單線程模型,所有的任務都在一個線程中運行。因此,我們認為,UI
Thread所執行的每一個函數,所花費的時間都應該是越短越好。而其他比較費時的工作(訪問網路,下載數據,查詢資料庫等),都應該交由子線程去執行,以免阻塞主線程。

D. android中listview的數據的同步與非同步載入有什麼區別,效果有什麼不同

目前沒有同步載入數據這種做法,如果網路延遲主界面UI就卡死了,
之後用戶不耐煩就只能強行關閉了,卡死的時候按鍵都沒反應的。
一個簡單的的多線程
class updatelocationTask extends AsyncTask<String, Integer, Response> {
protected void onPreExecute() {
//這里寫執行doInBackground方法之前要做的什麼,比如說彈出ProgressDialog
}
}

@Override

protected Response doInBackground(String... params) {
//這里就是線程裡面的方法了,比如說建立連接,請求數據
}
}
protected void onPostExecute(Response result) {
//這里可以根據返回值來確定怎麼操作,比如說刷新列表或者提示用戶網路不暢,是否再次刷新
}
}
}
}

E. android handler和非同步任務有什麼區別

其實handler與非同步任務沒有可比性,您的基礎還需要加強。下面這篇csdn的博客中有handler的詳細介紹,
http://blog.csdn.net/androidwuyou/article/details/52601498

AsyncTask實現的原理和適用的優缺點
AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以通過介面實現UI進度更新),最後反饋執行的結果給UI主線程.
使用的優點:
簡單,快捷
過程可控
使用的缺點:
在使用多個非同步操作和並需要進行Ui變更時,就變得復雜起來.

Handler非同步實現的原理和適用的優缺點
在Handler 非同步實現時,涉及到 Handler, Looper, Message,Thread四個對象,實現非同步的流程是主線程啟動Thread(子線程)運行並生成Message-Looper獲取Message並傳遞給HandlerHandler逐個獲取Looper中的Message,並進行UI變更。
使用的優點:
結構清晰,功能定義明確
對於多個後台任務時,簡單,清晰
使用的缺點:
在單個後台非同步處理時,顯得代碼過多,結構過於復雜(相對性)

AsyncTask介紹

Android的AsyncTask比Handler更輕量級一些(只是代碼上輕量一些,而實際上要比handler更耗資源),適用於簡單的非同步處理。
首先明確Android之所以有Handler和AsyncTask,都是為了不阻塞主線程(UI線程),且UI的更新只能在主線程中完成,因此非同步處理是不可避免的。

Android為了降低這個開發難度,提供了AsyncTask。AsyncTask就是一個封裝過的後台任務類,顧名思義就是非同步任務。
AsyncTask直接繼承於Object類,位置為android.os.AsyncTask。要使用AsyncTask工作我們要提供三個泛型參數,並重載幾個方法(至少重載一個)。

AsyncTask定義了三種泛型類型 Params,Progress和Result。
Params 啟動任務執行的輸入參數,比如HTTP請求的URL。
Progress 後台任務執行的百分比。
Result 後台執行任務最終返回的結果,比如String。
使用過AsyncTask 的同學都知道一個非同步載入數據最少要重寫以下這兩個方法:
doInBackground(Params…) 後台執行,比較耗時的操作都可以放在這里。注意這里不能直接操作UI。此方法在後台線程執行,完成任務的主要工作,通常需要較長的時間。在執行過程中可以調用publicProgress(Progress…)來更新任務的進度。
onPostExecute(Result) 相當於Handler 處理UI的方式,在這裡面可以使用在doInBackground 得到的結果處理操作UI。 此方法在主線程執行,任務執行的結果作為此方法的參數返回
有必要的話你還得重寫以下這三個方法,但不是必須的:
onProgressUpdate(Progress…) 可以使用進度條增加用戶體驗度。 此方法在主線程執行,用於顯示任務執行的進度。
onPreExecute() 這里是最終用戶調用Excute時的介面,當任務執行之前開始調用此方法,可以在這里顯示進度對話框。
onCancelled() 用戶調用取消時,要做的操作
使用AsyncTask類,以下是幾條必須遵守的准則:
Task的實例必須在UI thread中創建;
execute方法必須在UI thread中調用;
不要手動的調用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)這幾個方法;
該task只能被執行一次,否則多次調用時將會出現異常;
Handler介紹
一、 Handler主要接受子線程發送的數據, 並用此數據配合主線程更新UI.
當應用程序啟動時,Android首先會開啟一個主線程, 主線程為管理界面中的UI控制項,進行事件分發,更新UI只能在主線程中更新,子線程中操作是危險的。這個時候,Handler就需要出來解決這個復雜的問題。由於Handler運行在主線程中(UI線程中),它與子線程可以通過Message對象來傳遞數據, 這個時候,Handler就承擔著接受子線程傳過來的(子線程用sedMessage()方法傳遞)Message對象(裡麵包含數據), 把這些消息放入主線程隊列中,配合主線程進行更新UI。
二、Handler的特點
Handler可以分發Message對象和Runnable對象到主線程中, 每個Handler實例,都會綁定到創建他的線程中,
它有兩個作用:
(1)安排消息或Runnable 在某個主線程中某個地方執行
(2)安排一個動作在不同的線程中執行
Handler中分發消息的一些方法
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post類方法允許你排列一個Runnable對象到主線程隊列中,
sendMessage類方法, 允許你安排一個帶數據的Message對象到隊列中,等待更新.

F. android中實現非同步操作的方式有哪些,請簡述各自的特點

  1. AsyncTask類。這是安卓自帶的非同步載入類,封裝較好,使用方便

  2. 直接開啟子線程通過handler發送消息更新,代碼繁瑣一點,AsyncTask源碼也是這個原理

G. android 什麼是非同步載入

因為我們都知道在Android中的是單線程模型,不允許其他的子線程來更新UI,只允許UI線程(主線程更新UI),否則會多個線程都去更新UI會造成UI的一個混亂有些耗時的操縱(例如網路請求等),如果直接放到主線程中去請求的話則會造成主線程阻塞,而我們系統有規定的響應時間,當響應的時間超過了了阻塞的時間就會造成"Application No Response",也就是我們熟知的ANR錯誤解決上述問題的時候:我們一般使用的是線程或者線程池+Handler機制如果線程拿到一個數據需要去更新UI,那麼就需要Handler把子線程的更新UI的數據發消息給主線程,從而讓主線程去更新UI那麼還在使用Thread或ThreadPool+Handler的你是否已經厭倦這些繁瑣的操縱而且你會發現這些操作的代碼都很類似。所以AsyncTask就應運而生了。

H. android為什麼要用非同步任務

一般Android中的非同步都是用在網路請求時,而網路請求都有一些延時,如果都放在主線程中就會出現屏幕卡住的現象,這樣會影響用戶操作效果。。。

I. android什麼叫非同步請求,怎麼實現

一.非同步請求主要解決線程無法更新UI組件的方案

使用Handler實現線程之間的通信。

Activity.runOnUiThread(Runnbale)

View.post(Runnable)

View.postDelayed(Runnable)

二.ANR異常

Android默認約定當UI線程阻塞超過20秒將會引發ANR異常。開發者必須牢記,不要在UI線程中執行一些耗時操作

三.AsyncTask抽象類

AsyncTask<Params,Progress,Result>是一個抽象類,通常用於被繼承,繼承AsyncTask需要指定三個泛型參數:

Params:啟動任務執行的輸入參數的類型

Progress:後台任務完成進度值得類型

Result:後台執行任務完成後返回結果的類型

四.AsyncTask的特點

更輕量一些,適用於簡單的非同步處理,不需要藉助線程和Handler即可

五.使用AsyncTask的步驟

  1. 創建AsyncTask的子類,並為三個泛型參數指定類型,如果某個泛型參數不需要指定類型,可將它設為Void

  2. 根據需要,實現AsyncTask的如下方法:

    doInBackground(Params...):後台線程將要完成的任務,可以調用publishProgress(Porgress...values)方法更新任務執行進度。

    onProgressUpdate(Porgress..values):在doInBackground()方法中調用publishPorgress()方法更新任務的執行進度後,就會觸發該方法

    onPreExecute():執行後台耗時操作前被調用,通常用戶完成一些初始化操作,比如在界面上顯示進度條

    onPostExecute(Result result):當doInBackground()完成後,系統會自動調用onPostExecute()方法,並將doInBackground()方法返回的值傳給該方法.

  3. 調用AsyncTask子類的實例的execute(Params...params)開始執行耗時任務

六.使用AsyncTask時必須遵守的規則

必須在UI中創建AsyncTask的實例

必須在UI線程中調用AsyncTask的execute()方法

AsyncTask的onPreExecute()、onPostExecute(Result result)、doInBackground(Params....params)、onProgressUpdate(Progress...values)方法,不應該由程序員代碼調用,而是由AsyncTask系統負責調用

每個AsyncTask只能被執行一次,多次調用將會引發異常。

J. 在Android中什麼是非同步執行

非同步 和 同步的區別
非同步的好處,就是把一些東西,特別是耗時間的東西扔到後台去運行了,doInBackground,程序可以繼續做自己的事情,防止程序卡在那裡失去響應。
同步執行的話,就是程序會呆板地從頭執行到尾,耗時間的東西不執行完,程序不會繼續往下走,等待時間長的話,有時候就會造成失去響應了

閱讀全文

與android什麼是非同步相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163