栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Android上调用返回JSON响应的HTTP Web API调用的最有效方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Android上调用返回JSON响应的HTTP Web API调用的最有效方法是什么?

您正在使用的Http引擎似乎是最佳选择。实际上,任何其他第三方引擎都基于Apache或HttpUrlConnection。我更喜欢将Spring用于Android,因为该API提供了Http
Engine之上的抽象,并且您实际上不需要关心如何根据API级别使用什么API。或者,您可以使用Volley-一个非常时尚的图书馆。

但是,我会触摸您的一些代码:

  1. 如果读取流时出现异常怎么办?然后,流保持打开状态,并保持连接状态。因此,无论您是否遇到异常,我都建议在finally块中关闭流和连接:
        HttpURLConnection urlConnection = null;    URL url = null;    JSonObject object = null;    InputStream inStream = null;    try {        url = new URL(urlString.toString());        urlConnection = (HttpURLConnection) url.openConnection();        urlConnection.setRequestMethod("GET");        urlConnection.setDoOutput(true);        urlConnection.setDoInput(true);        urlConnection.connect();        inStream = urlConnection.getInputStream();        BufferedReader bReader = new BufferedReader(new InputStreamReader(inStream));        String temp, response = "";        while ((temp = bReader.readLine()) != null) { response += temp;        }        object = (JSONObject) new JSonTokener(response).nextValue();    } catch (Exception e) {        this.mException = e;    } finally {        if (inStream != null) { try {     // this will close the bReader as well     inStream.close(); } catch (IOException ignored) { }        }        if (urlConnection != null) { urlConnection.disconnect();        }    }
  1. JSON解析:您正在使用Android标准的JSON解析方式,但这并不是最快,最简单的方法。GSON和Jackson更好用。为了进行 JSON解析器的比较,我将选择Jackson。这是关于此比较的另一个SO主题。

  2. 不要像这样串联字符串,因为串联字符串会在每次创建另一个字符串时创建。请

    StringBuilder
    改用。

  3. 异常处理(在所有编程论坛中,这都是一个长期辩论的主题)。首先,您必须将其记录下来(

    Log
    不使用class
    System.out.printXXX
    )。然后,您需要通知用户:您敬酒一条消息,显示标签或通知。该决定取决于用户情况以及您进行的呼叫的相关程度。

这些是我在您的代码中看到的主题。

编辑 我意识到我没有回答这个问题:

is AsyncTask the most efficient way to run on backgroundthread or should I use something else?

我要给出的简短答案是:如果您应该执行短时的请求,那

AsyncTask
是完美的。但是,如果您需要获取一些数据并进行显示-
但又不想担心屏幕旋转等情况下是否再次下载,我强烈建议您通常使用an
AsyncTaskLoader
Loaders

如果您需要下载一些大数据,则可以使用

IntentService
或进行繁重的操作
DownloadManager

享受编码!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号