2017-05-27 4 views
0

EDIT:これはAsyncTaskで実行されます。私は、このコードブロックに多くのANR年代を受けたURL接続を呼び出すときにANRを受け取る

URL url = new URL(sURL); 
     URLConnection connect = url.openConnection(); 
     connect.setConnectTimeout(R.integer.timeoutLengthWithACapitalT); 
     connect.setReadTimeout(R.integer.timeoutLengthWithACapitalT); 
     BufferedReader in = new BufferedReader(new InputStreamReader(connect.getInputStream())); //Problem Line 

R.integer.timeoutLengthWithACapitalT 1000

である私はこれを引き起こしているかわからない、私はそれがタイムアウトしなければならないと考えています。しかし、私はANRのスタックトレースを取得します。

スタックトレース: https://pastebin.com/hwJhGfVX

+0

あなたは、メインアプリケーションスレッドにこのコードを実行すべきではないためにAndroidのドキュメントを確認することができ、コードスニペット

private class MyAsyncTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { //your main network call code return result; //this return will invoke onProgressCompleted } protected void onPreExecute() { //network call in progress, you can show a loaded here if you want } protected void onPostExecute(Long result) { //Once network call is completed } } 

の下に使用することができます。 – CommonsWare

+0

これをAsynctaskなしでどのように実行しましたか? –

+0

お願いしますマルチスレッド –

答えて

0

あなたは、メインスレッドではなく、あなたのネットワーク呼び出しを実行する必要があります。私はすべてのネットワークコールにAsyncTaskを使用する方が好きです。あなたはまた、より詳細 https://developer.android.com/reference/android/os/AsyncTask.html

+0

ありがとう、私は非同期を使用しているので、これは問題ではないことを言いました。 –

+0

@JonathanBurkエラースタックトレースを共有する – Arshad

+0

私はあなたのためにpastebinに追加しました。私はあなたが必要な場合はさらに多くを持っていますが、彼らはすべてほぼ同じです。 –

関連する問題