पर ले जाएगा मैं बाहरी स्टोरेज में बाहरी एमपी 3 डाउनलोड करने का प्रयास कर रहा हूं। हालांकि, जिन फ़ाइलों को मैं डाउनलोड करने का प्रयास कर रहा हूं वे बड़े हैं, इसलिए मैं उन्हें 1 एमबी भाग में डाउनलोड करने की कोशिश कर रहा हूं ताकि बाकी डाउनलोड होने पर आप उन्हें खेलना शुरू कर सकें। यहाँ मेरी धारा कोड है:इनपुटस्ट्रीम बंद नहीं होगा, या हमेशा
InputStream is = null;
OutputStream os = null;
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
MyLog.d("Connection established");
byte[] buffer = new byte[8192];
is = new BufferedInputStream(response.getEntity().getContent(), buffer.length);
os = openFileOutput(filename, MODE_PRIVATE);
int size;
int totalSize = 0;
while ((size = is.read(buffer)) != -1 && totalSize < 1048576) {
os.write(buffer, 0, size);
totalSize += size;
}
MyLog.d("Finished downloading mix - " + totalSize + " bytes");
}
catch (ClientProtocolException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (os != null) {
try {
os.flush();
os.close();
}
catch (IOException e) {
MyLog.e("Failed to close output stream.");
}
}
if (is != null) {
try {
is.close();
}
catch (IOException e) {
MyLog.e("Failed to close input stream.");
}
}
}
यह फ़ाइल ठीक डाउनलोड करता है, लेकिन जब यह() अंत में बयान में is.close लिए हो जाता है, यह लटका हुआ है। अगर मैं वास्तव में लंबे समय तक प्रतीक्षा करता हूं तो यह अंततः बंद हो जाएगा। ऐसा लगता है कि यह अभी भी बाकी फाइल डाउनलोड कर रहा है। मैं इससे कैसे बचूं और तुरंत स्ट्रीम बंद करूँ?
बिल्कुल सही। धन्यवाद! –
मेरे लिए भी काम किया। विचित्र रूप से, ज्यादातर एंड्रॉइड कार्यान्वयन लटका नहीं है। मैंने इसे अभी तक Droid X2 पर देखा है। – dhaag23
में मेरे DefaultHttpClient abort विधि में अनुपलब्ध है, लेकिन mHttpClient.getConnectionManager()। Shutdown() बहुत अच्छा काम करता है। – pvllnspk