我们的初衷是想在Android每隔一秒get或post一次,但是get/post的代码放在计时器/子线程里就报错了。

原方法

try {

new Thread(new Runnable() {
@Override
public void run() {

//执行AsyncHttpClient的get或post函数

                                       funHttp();

}
}).start();
} catch (Exception e) {
e.printStackTrace();

}

此时,会抛出异常:

java.lang.IllegalArgumentException: Synchronous ResponseHandler used in AsyncHttpClient. You should create your response handler in a looper thread or use SyncHttpClient instead.

原因是:AsyncHttpClient本事是异步机制,但是同步的ResponseHandler用在了异步的http客户端上,你需要给你的线程创建一个looper或者使用SyncHttpClient。

解决方法是添加一个handle。

final Handler m_handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.arg1 == 0) {
//执行AsyncHttpClient的get或post函数
funHttp();
}
}
};

try {
new Thread(new Runnable() {
@Override
public void run() {
Message msg = m_handler.obtainMessage();
msg.arg1 = 0;
m_handler.sendMessage(msg);
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}

更多相关文章

  1. Android(安卓)学习之旅---Activity生命周期(1)--函数的调用顺序
  2. android 去掉系统自带的跳转activity的动画
  3. android studio如何添加jni
  4. Android中Fragment的构造函数 his fragment should provide a de
  5. Android初级教程理论知识(第八章网络编程二)
  6. android多线程下载模块
  7. 退出Dialog时,Activity的生命周期运行情况
  8. Android十八章:EventBus3.0使用
  9. Android(安卓)ConditionVariable的用法

随机推荐

  1. 【Android】实现打开关闭效果
  2. Android 之开发积累
  3. Android碎碎念 -- 设置文字颜色
  4. Android关于读取临时文件
  5. Android中Intent传递对象的两种方法:Seri
  6. Android P Camera2相机简单解析(二、拍照)
  7. android 2.2 完全 退出 ---程序代码
  8. [android]简单方法记载 在adapter中异步
  9. android中bitmap和drawable互相转换
  10. android倒计时控件示例