【发布时间】:2013-10-11 17:03:24
【问题描述】:
我在我的 Android 应用程序中使用 Kevin Sawicki 的库来处理 HTTP 请求。用于发出请求的库方法的实际调用是在名为TemplateHelper 的类文件中进行的(它不是从活动中调用的)。在我的 TemplateHelper 类中调用 HttpRequest 库的方法如下所示
public static JSONObject GetTemplates() {
try {
return new JSONObject(HttpRequest.get("http://myapi.mycompany.com/templates").body());
} catch (HttpRequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
然后从我的活动中调用TemplateHelper.GetTemplates() 来获取数据。但是,当我这样做时,Android 会抛出异常 android.os.NetworkOnMainThreadException。
快速的 Google 搜索显示了在单独的线程上运行 HTTPRequest 的代码。但是如果我在一个单独的线程中运行代码,我怎样才能将结果返回给主线程呢?
【问题讨论】:
-
不要。使用异步流。
-
如果你使用
AsyncTask,onPostExecute()方法将在任务完成后在主线程上运行。 -
This answer 将向您展示如何使用
AsyncTask实现interface,这样您就可以在任务完成后将callBack发送到MainActivity。
标签: java android multithreading