在 Android 3.2 上 HttpClient 的 HttpPost 执行速度明显慢于 2.3.3

Posted

技术标签:

【中文标题】在 Android 3.2 上 HttpClient 的 HttpPost 执行速度明显慢于 2.3.3【英文标题】:HttpClient execution of HttpPost significantly slower on Android 3.2 than 2.3.3 【发布时间】:2012-02-05 20:49:48 【问题描述】:

有人知道为什么下面的代码在 android 3.2(Samsung Galaxy 10.1" Tab)上的运行速度会比在 2.3.3(Motorola Droid X)上慢 4 倍吗?

在 Android 2.3.3 上,client.execute() 调用平均需要 350 毫秒。在 3.2 下,平均需要 1400 毫秒

此外,无论是在 UI 线程还是后台线程中运行,结果都是相同的。

这是操作系统错误还是硬件问题?或者我在我的代码中没有做正确的事情?不幸的是,我无法让 ADB 连接到我的 3.2 虚拟设备,所以我不能排除硬件问题,但我的直觉告诉我这是一个 Honeycomb 问题。

HttpResponse resp = null;
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpClient client = new DefaultHttpClient(params);
ArrayList<BasicNameValuePair> postParms = new ArrayList<BasicNameValuePair>();
postParms.add(new BasicNameValuePair("name", "test"))

try

    HttpPost hp = new HttpPost("http://myserver/path/method");
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParms);
    hp.setEntity(formEntity);

    Long start = SystemClock.elapsedRealtime();
    resp = client.execute(hp);
    Long stop = SystemClock.elapsedRealtime();
    Log.i("Time = " + (stop-start) + "ms");

...

【问题讨论】:

两个请求是否都通过 WiFi 执行? 是的,两者都通过 WiFi。 【参考方案1】:

如果您没有其他时间,请安装终端并查看 Galaxy Tab 上的 top,以确保 CPU 没有被其他设备占用。 android.process.media。

【讨论】:

总 CPU 峰值仅达到 16%。而 android.process.media 甚至都进不了前 20。

以上是关于在 Android 3.2 上 HttpClient 的 HttpPost 执行速度明显慢于 2.3.3的主要内容,如果未能解决你的问题,请参考以下文章

admob:应用程序在 android 3.2 上崩溃

httpclien模拟浏览器

在 Android 3.2 上 HttpClient 的 HttpPost 执行速度明显慢于 2.3.3

在 Windows 上搭建基于Android Studio 3.2 的 Flutter 开发环境

HttpClien高并发请求连接池 - PoolingHttpClientConnectionManager

3.2Android Studio在物理设备中运行APP