【问题标题】:Simulate slow network on Android simulator在 Android 模拟器上模拟慢速网络
【发布时间】:2016-07-01 02:17:32
【问题描述】:

我正在构建一个应用程序,它使用 AsyncTask 在执行网络操作时显示进度条(谷歌翻译)。 但是,问题是我无法判断它是否正常工作,因为网络太快了,并且一旦我启动它就会完成运行操作。 那么有没有办法模拟慢速网络,以便我可以判断进度条在等待操作完成时是否会实际运行(可见)?我在创建 Android 模拟器时遇到了网络选项。但是,缩写太多了,我仍然无法理解什么表示网络连接速度慢,我仍然不确定是否应该这样设置网络连接速度慢。

提前致谢!

【问题讨论】:

  • 模拟器用什么操作系统?
  • 我正在使用 Android 设备在 OSX 上进行开发。对不起,如果我没有得到你的问题,大声笑
  • 这可能对你有帮助 >> stackoverflow.com/questions/7026251/…

标签: android android-asynctask android-emulator


【解决方案1】:

模拟器可让您模拟各种网络条件。您可以估算不同网络协议的网络速度,也可以指定 Full,它以计算机允许的速度传输数据。

指定网络协议总是比 Full 慢。您还可以指定语音和数据网络状态,例如漫游。默认值在 AVD 中设置。

选择网络类型:

  • GSM - 全球移动通信系统
  • HSCSD - 高速电路交换数据
  • GPRS - 通用分组无线服务
  • EDGE - GSM Evolution 的增强数据速率
  • UMTS - 通用移动电信系统
  • HSPDA - 高速下行链路分组接入
  • 完整(默认)

增加 kbps 的参考速度:

                        UP       DOWN
                  -------- ----------
gsm   GSM/CSD         14.4       14.4
hscsd HSCSD           14.4       57.6
gprs  GPRS            28.8       57.6
umts  UMTS/3G        384.0      384.0
edge  EDGE/EGPRS     473.6      473.6
hsdpa HSDPA         5760.0   13,980.0
lte   LTE         58,000.0  173,000.0
evdo  EVDO        75,000.0  280,000.0
full  No limit           ∞          ∞

选择语音状态、数据状态或两者:

  • 主页(默认)
  • 漫游
  • 正在搜索
  • 拒绝(仅限紧急呼叫)
  • 未注册(关闭)

欲了解更多信息,请参阅https://developer.android.com/studio/run/emulator.html#extended

【讨论】:

  • 谢谢!我其实早在这个页面上,但即使我搜索了网络类型后,我仍然不知道哪个最慢。当我测试它时,它似乎仍然很快。
  • 仅供参考,我的模拟器上的选项与此处列出的选项不同。我得到GSM HSCSD GPRS EDGE UMTS HSDPA 4G 最奇怪的是它们都非常慢。不是 4G/LTE 的最快的是 78 kbps,这非常慢。没有“3G”选项。所以这对于测试非常慢的连接非常有用,但我最终将我的 iPhone 连接起来,将我的蜂窝连接限制为 3G 并使用它来进行测试。我希望他们增加了更多的速度,并且他们指定了每个速度达到的确切速度,而不是让我们查找它。
【解决方案2】:

在 OS X 中你可以使用 Network Link Conditioner,非常有用。这是一个如何使用它以及如何安装的链接。它会影响所有使用网络的程序。

http://nshipster.com/network-link-conditioner/

您还可以将所有流量发送到代理并使用限制。我使用了 Charles(商业,30 天免费试用) https://www.charlesproxy.com/

【讨论】:

  • 谢谢!它也适用于Android模拟器吗?还是因为我在 Mac 上运行我的 Android 模拟器所以没问题?
  • 它为在 OSX 中运行的所有东西模拟坏网络。代理也是如此。
  • @CharlesLi 注意,如果您将模拟器连接到在 Mac 上运行的本地服务器,我认为这不会限制,因为它发生在本地。例如,我将模拟器连接到在我的 Mac 上本地运行的 rails 应用程序,因此它绕过了这个。我认为。
  • 仅供参考,此网络链接调节器仅适用于运行的 iOS 模拟器,不适用于主机的网络连接。我试图使用它来限制我的 Mac 的网络连接,以便可以通过我的 Mac 的连接来限制 Android 模拟器。没有运气。
  • 网络链接调节器适用于 macOS,而不仅仅是 iOS 模拟器。所以在操作系统上运行的一切都应该受到限制。我对此没有任何意见。
【解决方案3】:

使用命令行上的 telnet,您可以连接到模拟器并更改设备的网络速度。

telnet localhost <<port of device>>
network speed <<network speed, ex: edge, full>>

您可以从模拟器窗口的顶部获取设备的端口。

您可以使用android docs here 中的任何速度。 Id 建议使用 edge 以降低速度

如果您使用的是 Windows,则必须设置 telnet,您可以在 this SO post 中找到相关说明。

【讨论】:

  • 谢谢!所以我在模拟器中启动我的应用程序后运行这些命令?而对于网络速度,我应该给它什么参数让它变慢?谢谢!
  • 是的,只要在你的模拟器运行后在命令行中运行这两个命令(你不需要启动你的应用程序)。为了让它变慢,我建议使用“edge”作为速度。看起来速度的链接格式不正确,所以我会修复它
【解决方案4】:

在模拟器应用中,您可以通过单击侧面的三个点来更改网络设置:

然后选择“蜂窝”,就可以看到网络设置了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 2012-04-09
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多