您正在使用的Http引擎似乎是最佳选择。实际上,任何其他第三方引擎都基于Apache或HttpUrlConnection。我更喜欢将Spring用于Android,因为该API提供了Http
Engine之上的抽象,并且您实际上不需要关心如何根据API级别使用什么API。或者,您可以使用Volley-一个非常时尚的图书馆。
但是,我会触摸您的一些代码:
- 如果读取流时出现异常怎么办?然后,流保持打开状态,并保持连接状态。因此,无论您是否遇到异常,我都建议在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(); } }JSON解析:您正在使用Android标准的JSON解析方式,但这并不是最快,最简单的方法。GSON和Jackson更好用。为了进行 JSON解析器的比较,我将选择Jackson。这是关于此比较的另一个SO主题。
不要像这样串联字符串,因为串联字符串会在每次创建另一个字符串时创建。请
StringBuilder
改用。异常处理(在所有编程论坛中,这都是一个长期辩论的主题)。首先,您必须将其记录下来(
Log
不使用classSystem.out.printXXX
)。然后,您需要通知用户:您敬酒一条消息,显示标签或通知。该决定取决于用户情况以及您进行的呼叫的相关程度。
这些是我在您的代码中看到的主题。
编辑 我意识到我没有回答这个问题:
is AsyncTask the most efficient way to run on backgroundthread or should I use something else?
我要给出的简短答案是:如果您应该执行短时的请求,那
AsyncTask是完美的。但是,如果您需要获取一些数据并进行显示-
但又不想担心屏幕旋转等情况下是否再次下载,我强烈建议您通常使用an
AsyncTaskLoader和
Loaders。
如果您需要下载一些大数据,则可以使用
IntentService或进行繁重的操作
DownloadManager。
享受编码!



