tsoftwaretsoftware 2021-10-24 17:55 采纳率: 50%
浏览 23

请求网络接口出错:android.os.NetworkOnMainThreadException

调试了好久,才发现是因为Http请求写在了主线程里,在4.0之后在主线程里面执行Http请求都会报这个错,大概是怕Http请求时间太长造成程序假死的情况吧。

//于是我改写了函数,在函数里面创建了线程调用网络请求,但函数return值返回是空的,估计是线程还未执行完就返回了,我是一名android初学者,想请教一下各位,怎样改写下面这个函数,我想在程序其它地方直接调用 GetJSonData(),就得到我想要的返回结果。

public String GetJSonData() {
            String responseJSON = "";
    new Thread(new Runnable() {
        @Override
        public void run() {
            responseJSON =  TO DO http request.
        }
    }).start();
    return responseJSON;
     }
  • 写回答

4条回答 默认 最新

  • Fighting Horse 新星创作者: 编程框架技术领域 2021-10-24 18:24
    关注

    你的分析是对的,这里需要异步返回。线程内完成后,给ui线程post一个event。new Handler(Looper.mainLooper()).postRunnable(...)

    评论

报告相同问题?

问题事件

  • 创建了问题 10月24日