BufferedReader在标准java中工作,但不在android中

时间:2012-11-02 23:09:52

标签: android url bufferedreader

所以我在java和android中有完全相同的代码,但由于某种原因在android方法get()总是无法完成工作并返回false,但在标准java中它完美无缺。我在清单中有互联网许可。

以下是代码:

    public boolean get(){
        try {
            jsonObject = new JSONObject(readUrl(url)); // Ignore JSON thing.
            return true;
        } catch (Exception ex) {
            return false;
        }
    }

    private String readUrl(String urlString) throws Exception {
        BufferedReader reader = null;
        try {
            URL url = new URL(urlString);
            reader = new BufferedReader(new InputStreamReader(url.openStream()));
            StringBuffer buffer = new StringBuffer();
            int read;
            char[] chars = new char[1024];
            while ((read = reader.read(chars)) != -1) {
                buffer.append(chars, 0, read);
            }

            return buffer.toString();
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

在Android中启动服务时,它仍然在主线程中运行,也就是说, UIThread ,作为一种好的做法,你不应该在那里进行任何密集处理线程,因为它将锁定用户与您的应用程序的交互。因此,即使在服务中,您也必须创建自己的线程来访问网络资源 以下是Services

的参考链接