[英]Xamarin.Android HTTP Random Delays
我有執行名為幾個HTTP請求的方法LoadServers()
A按鈕執行LoadServers()
對於我的問題,僅在上一次LoadServers()
調用完成后才點擊按鈕。 加載時出現進度對話框,因此我只能串行執行它們。
大約每10-15次調用LoadServers
導致第一個http請求延遲幾乎10秒。 LoadServers
完成的平均時間少於半秒,並且永遠不會超過1秒。 這僅在Xamarin.Android上發生。 Xamarin.iOS不會發生延遲,並且所有這些代碼都是共享的。
這是我的代碼
private async Task LoadServers() {
await Get();
await Post();
await Get();
await Get();
await Post();
}
private async Task Get() {
var url = _httpClient.BaseAddress + model.GetToken();
Log("Attempting to send GET to: " + url);
using (var response = await _httpClient.GetAsync(url))
{
var resultContent = await response.Content.ReadAsStringAsync();
Log("Got response back from : " + url + ": " + resultContent);
}
}
private async Task Post() {
var content = requestData.GetToken() + "=" + requestData.PostBody ();
var request = new StringContent(content)
{
Headers = { ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") }
};
var url = _httpClient.BaseAddress + "/No_content";
Log ("Attempting to send POST to: " + url + " with content: " + content);
using (var response = await _httpClient.PostAsync(url, request))
{
string resultContent = await response.Content.ReadAsStringAsync();
Log("Got response back from : " + url + ": " + resultContent);
}
}
每執行15次左右的LoadServers()
,就會生成以下日志語句:
Thread started: #37
Thread finished: #37
[2017-01-21T13:42:30.8841620-06:00] [debug] Loading Servers
[2017-01-21T13:42:30.8946770-06:00] [debug] Attempting to send GET to: XXX
Thread finished: <Thread Pool> #23
Thread started: <Thread Pool> #38
[2017-01-21T13:42:40.9550360-06:00] [debug] Got response back from : XXX <-- Notice the time (~10 seconds)
這與HTTP請求的資源消耗有關嗎? 它試圖清理資源並暫停執行直到發生這種情況? 我不確定執行請求時會發生什么。 它是否啟動新線程?
我嘗試了同樣的問題。 我正在使用xamarin.android 6.6.1.2-21並支持Api 23的內容。
我發現在第一次調用之前使用默認的httpHandler並創建2個httpClient可以解決此問題。
new HttpClient( new Xamarin.Android.Net.AndroidClientHandler());
並在您的代碼中開始任何實際調用之前創建2個httpclient。
還將“ HttpClient實現”設置為“ AndroidClientHandler”。 您可以在以下位置找到此選項:項目選項> Android構建>代碼生成和運行時。 這僅適用於android 5+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.