如题,看文档说在子线程中执行耗时操作就不会ANR了吗,可为什么我试了那么多篇还是一样,新手求教
代码:
/**
* 异步的Get请求
*
* @param urlStr 请求url地址
* @param callBack 请求结果回调
*/
public static void doGetAsyn(final String urlStr, final CallBack callBack) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String result = doGet(urlStr);
if (callBack != null) {
callBack.onRequestComplete(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}执行请求:
try {
handler.obtainMessage(AppConfig.DIALOG_OPEN, -1, -1, "加载中…").sendToTarget();
String url = AppConfig.APP_API + "/Songbai/rest/Staff/getbyStaffID?StaffID=" + staffID;
HttpUtils.doGetAsyn(url, new HttpUtils.CallBack() {
@Override
public void onRequestComplete(String result) {
Message message = new Message();
message.obj=result;
message.what = AppConfig.REQUEST_SUCCESS;
handler.sendMessage(message);
}
});
}catch (Exception e) {
handler.obtainMessage(AppConfig.SHOW_MESSAGE,-1,-1,"网络请求出错").sendToTarget();
Log.d("",e.getMessage());
}
代码:
/**
* 异步的Get请求
*
* @param urlStr 请求url地址
* @param callBack 请求结果回调
*/
public static void doGetAsyn(final String urlStr, final CallBack callBack) {
new Thread(new Runnable() {
@Override
public void run() {
try {
String result = doGet(urlStr);
if (callBack != null) {
callBack.onRequestComplete(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}执行请求:
try {
handler.obtainMessage(AppConfig.DIALOG_OPEN, -1, -1, "加载中…").sendToTarget();
String url = AppConfig.APP_API + "/Songbai/rest/Staff/getbyStaffID?StaffID=" + staffID;
HttpUtils.doGetAsyn(url, new HttpUtils.CallBack() {
@Override
public void onRequestComplete(String result) {
Message message = new Message();
message.obj=result;
message.what = AppConfig.REQUEST_SUCCESS;
handler.sendMessage(message);
}
});
}catch (Exception e) {
handler.obtainMessage(AppConfig.SHOW_MESSAGE,-1,-1,"网络请求出错").sendToTarget();
Log.d("",e.getMessage());
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货