簡體   English   中英

如何衡量Android Xamarin應用上的數據使用情況?

[英]How to measure data usage on Android Xamarin app?

在Visual Studio的Android Xamarin應用程序中衡量數據使用的最佳方法是什么?

我想知道,每個調用的請求傳輸了多少數據。 我在尋找Xamarin Profiler,但沒有有關數據使用的任何信息。

謝謝。

您可以使用的一種方法是通過Android設備監視器來監視網絡流量

在此處輸入圖片說明

在此處輸入圖片說明

另外,如果您在自定義處理程序中使用HttpClient ,則可以包裝請求,並記錄請求有效負載的大小:

public class RequestLoggerHandler : HttpClientHandler
{

#if DEBUG
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var stopwatch = Stopwatch.StartNew();
        HttpResponseMessage response = null;
        var headers = request.Headers;
        var responseString = string.Empty;
        var requestString = string.Empty;
        var outputStringBuilder = new StringBuilder();

        const string LINE_ENDING = "===================================================================================================";
        const string SECTION_ENDING = "---------------------------------------------------------------------------------------------------";

        try
        {
            if (request.Content != null) requestString = await request.Content?.ReadAsStringAsync();
            response = await base.SendAsync(request, cancellationToken);
            responseString = await response.Content?.ReadAsStringAsync();

            outputStringBuilder.AppendLine(LINE_ENDING);

            // Headers
            outputStringBuilder.AppendLine("REQUEST HEADERS:");
            foreach (var header in headers)
                outputStringBuilder.AppendLine($"HEADER: {header.Key}: {header.Value?.ToList()?.FirstOrDefault()}");
            outputStringBuilder.AppendLine(SECTION_ENDING);

            // Parameters
            outputStringBuilder.AppendLine("REQUEST PARAMS:");
            outputStringBuilder.AppendLine(requestString);
            outputStringBuilder.AppendLine(SECTION_ENDING);

            // Response
            outputStringBuilder.AppendLine("RESPONSE:");
            outputStringBuilder.AppendLine(responseString);
            outputStringBuilder.AppendLine(SECTION_ENDING);

            return response;
        }
        finally
        {
            stopwatch.Stop();
            var totalSize = 0L;

            if (response != null)
            {
                var bodylength = response.Content.Headers.ContentLength;
                var headerlength = response.Headers.ToString().Length;
                totalSize = bodylength.GetValueOrDefault() + headerlength;
            }

            outputStringBuilder.AppendLine(string.Format("REQUEST [{0}:{1}] Time:{2}| Size:{3}| HTTP-CODE:{4}",
                request.Method.ToString(),
                request.RequestUri,
                stopwatch.Elapsed.ToString("ss\\.fff"),
                totalSize.ToPrettyByteSize(),
                response?.StatusCode.ToString() ?? "No Internet Connectivity"));

            outputStringBuilder.AppendLine(LINE_ENDING);

            Debug.WriteLine("\n" + outputStringBuilder);
        }
    }
#endif
}

然后,在使用VSColorOutput擴展的輸出窗口中,它會生成有關請求/響應(包括時間和大小)的可讀報告。 如果您所追求的只是請求/響應的大小,則可以簡化此代碼。

在此處輸入圖片說明

暫無
暫無

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

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