簡體   English   中英

Xamarin.Forms Android 上的 HttpClient 無響應和凍結(棱鏡)

[英]HttpClient on Xamarin.Forms Android Not Responding and Freezing (Prism)

我有一個非常簡單的 MVVM 應用程序,它使用 Xamrin Forms 和 Prism,從 Prism Xamarin 模板構建。

當我初始化一個新的 ViewModel 時,我試圖在 UWP 上調用 API,這沒有任何問題,但在 Android 上它只是凍結而不返回任何錯誤或拋出任何異常。

我已將代碼簡化為錯誤發生的位置,並使用任何人都可以使用的 URI 進行了測試。

public async Task InitializeAsync(INavigationParameters parameters)
    {
        try
        {
            var client = new HttpClient();
            
            var response = await client.GetAsync("https://www.google.co.uk").ConfigureAwait(false);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.Message);
        }
    }

我正在使用以下 NuGet

  • Prism.Core v8.0.0.1909
  • Prism.Dryloc.Forms v8.0.0.1909
  • Xamarin.Forms v4.8.0.1687

我已將 HttpClient 實現設置為 Android 和 Native TLS 1.2+ 在此處輸入圖像描述

我已經查看了其他幾篇看起來相似但在解決問題方面沒有任何樂趣的帖子,任何人都可以解釋我如何解決這個問題或讓它工作嗎?

當我開始使用 Xamarin 時,我遇到了同樣的問題。

我還建立了一個可以幫助你的庫,叫做Rest.API.Translator你也可以在nuget上找到它

現在,如果您不願意使用我的庫,您可以在這里查看我的代碼,也知道我是如何解決凍結問題的。

看一下

Client.GetAsync(new Uri(url)).Await()

.Await是我創建的擴展,以確保 http 調用之間不會發生重疊和凍結問題

經過一段時間的故障排除並將我的頭撞在磚牆上后,我終於弄清楚出了什么問題。

沒有什么!

單步執行 Android 並沒有越過下面的第 7 行,屏幕也沒有重繪。

var response = await client.GetAsync("https://www.google.co.uk").ConfigureAwait(false);

當我將手機旋轉 90 度時,屏幕會重新繪制,我可以看到請求已經生效。

暫無
暫無

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

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