如何模拟Android设备上的网络问题?
我需要在以下情况下测试我的应用程序:
我可以模拟这种将adsl电缆从我的ruter中拉出来,但是不会很快重新连接。 这是以任何方式来模拟这个程序?
如果你有一台Mac,你可以使用Network Link Conditionner来完成。 这非常高效,请参阅此处安装它的步骤:
http://nshipster.com/network-link-conditioner/
如果你碰巧有另一台设备,你可以用它创建一个热点,并禁止移动网络互联网。 测试设备将连接到热点,但由于缺乏互联网而无法到达任何地方。 至于那里的连接,我认为它比重新启动路由器更快。 但是,你必须有另一个设备才能发生这种情况......否则我不知道,我也想知道一个真实的答案。
尝试通过一个android.os.Handler传递所有的网络请求(我也使用它与数据库交易)。 使用Runnables(更好地实现自己的Runnable类)来实现要执行的动作(在Runnable类中添加回调,日志记录和其他逻辑)。 这样,您可以轻松地在您的Runnable类中注册监听器,以执行您感兴趣的任何睡眠或失败。
这里是我的项目的一些代码。 M_ClientRunnable类实现Runnable,并具有用于注册“取消器”,失败侦听器和成功侦听器的其他方法。
class LooperThread extends Thread {
public Handler mHandler;
public LooperThread() {
super();
start();
}
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
getLogger().info(TAG, msg.toString());
}
};
Looper.loop();
}
public boolean post(M_ClientRunnable runnable) {
if(!isAlive()) {
start();
}
if (mHandler!=null) {
return mHandler.post(runnable);
} else {
return false;
}
}
};
private LooperThread looper = new LooperThread();
@Override
public boolean post(M_ClientRunnable runnable) {
return looper.post(runnable);
}
链接地址: http://www.djcxy.com/p/18101.html
上一篇: How to simulate network issues on a Android device?
下一篇: How can I render a view into a string in Visual Studio Unit Testing Framework?