如题,看文档说在子线程中执行耗时操作就不会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());
        }

解决方案 »

  1.   

    会不会是其他地方ARN了
      

  2.   

    这部分代码应该没有问题,方便贴一下doGetAsyn()方法中的doGet()方法么?这个方法应该是你向服务端发送get请求的核心方法吧?个人认为应该重点分析下这里有木有发生阻塞
      

  3.   

    估计是在其他地方ARN了
      

  4.   

    肯定是你主线程挂了或者写了个sleep,跟网络请求没毛关系