0

したがって、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();
            }
        }
    }
4

1 に答える 1

2

Android では、サービスを開始すると、サービスはまだMain Thread、別名UIThreadで実行されます。お勧めの方法として、そのスレッドで集中的な処理を行うべきではありません。アプリケーションとのユーザー インタラクションがロックされるからです。そのため、サービス内であっても、ネットワーク リソースにアクセスするには独自のスレッドを作成する必要があります。ここにサービス
への参照リンクがあります

于 2012-11-02T23:55:44.650 に答える