मेरे पास एक जटिल ऐप है जो एडब्ल्यूएस पर मेरे webservice से बहुत सारी सामग्री डाउनलोड करता है। हालांकि, मैं SocketTimeoutException
समय का 50% प्राप्त करता रहता हूं। मेरे शोध के आधार पर, मुझे लगता है कि वहाँ कारणों में निम्न हो सकता है:सॉकेटटाइमआउट एक्सेप्शन एंड्रॉइड
- के लिए समय कनेक्शन समयबाह्य कम है: मैं इसे 100 सेकंड के लिए वृद्धि हुई है, लेकिन अभी भी यह त्रुटि मिलती रहती।
- मेमोरी लीक: मैं
GC
चेतावनियां प्राप्त करता रहता हूं। मैंने लेख पढ़े हैं और मेरे कोड को बेहतर बनाने की कोशिश की है लेकिन यह या तो मदद नहीं करता है। मुझे यह भी जिक्र करना होगा कि मेरा ऐप 2000+ 30 केबी जेएसओएन को पृष्ठभूमि थ्रेड में एक के बाद डाउनलोड करता है। इस कुशलता से सुधार करने के सुझावों का अत्यधिक स्वागत किया जाएगा! - सर्वर समस्या: चूंकि अमेज़ॅन वेब सेवा अत्यधिक विश्वसनीय है, इसलिए यह अंतर्निहित समस्या नहीं हो सकती है।
- एकाधिक थ्रेडिंग: क्या यह किसी भी तरह जिम्मेदार हो सकता है?
- डाउनलोड करने का गलत तरीका: मुझे संदेह है कि मैं एक अक्षम तरीके से डाउनलोड कर रहा हूं। यदि मैं गलत हूं तो मुझे सही करों।
कृपया मुझे असली समस्या का पता लगाने में मदद करें। धन्यवाद !
public synchronized String getJSONString(String url)
{
try {
URL url1 = new URL(url);
URLConnection tc = url1.openConnection();
tc.setConnectTimeout(timeout);
tc.setReadTimeout(timeout);
// tc.connect();
br = new BufferedReader((new InputStreamReader(tc.getInputStream())),8000);
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
json = sb.toString();
return json;
}
catch(Exception e)
{
Log.e("JSON Downloader", "Error downloading feed/article ");
e.printStackTrace();
}
return null;
}
त्रुटि लॉग:
02-01 06:37:43.375: W/System.err(5548): java.net.SocketTimeoutException
02-01 06:37:43.375: W/System.err(5548): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
02-01 06:37:43.375: W/System.err(5548): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
02-01 06:37:43.375: W/System.err(5548): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
02-01 06:37:43.375: W/System.err(5548): at java.io.InputStream.read(InputStream.java:163)
02-01 06:37:43.375: W/System.err(5548): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
02-01 06:37:43.375: W/System.err(5548): at java.io.BufferedInputStream.read(BufferedInputStream.java:227)
02-01 06:37:43.375: W/System.err(5548): at libcore.io.Streams.readAsciiLine(Streams.java:201)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:544)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:784)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
02-01 06:37:43.375: W/System.err(5548): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
02-01 06:37:43.375: W/System.err(5548): at com.in.feeds.JSONDownloader.getJSONString(JSONDownloader.java:65)
02-01 06:37:43.375: W/System.err(5548): at com.in.feeds.JSONDownloader.getJSONObjectFromUrl(JSONDownloader.java:45)
02-01 06:37:43.375: W/System.err(5548): at com.in.fullarticle.ArticlePage$LoadArticle.run(ArticlePage.java:383)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-01 06:37:43.375: W/System.err(5548): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-01 06:37:43.375: W/System.err(5548): at java.lang.Thread.run(Thread.java:856)