2011-04-05 5 views
8

मेरे पास Httpclient के लिए एक कक्षा है। एक ही उदाहरण पूरे आवेदन में प्रयोग किया जाता है। तो यदि ग्राहक == शून्य है तो इसे एक और बनाना चाहिए, यह मौजूदा उदाहरण वापस कर देगा। सब कुछ तब तक काम करता है जब तक मैं संसाधन से बाहर निकलने पर संसाधन को जारी करने का प्रयास नहीं करता: client.getConnectionManager()। Shutdown(); .... इसके बाद मैं फिर से लॉगिन करने में सक्षम नहीं हूं। यह Sysem त्रुटि कहता है: कनेक्शन पूल शटडाउन। यहाँ वर्ग:कनेक्शन पूल शटडाउन एंड्रॉइड

public class HttpClientFactory { 
    private static DefaultHttpClient client;   
    public synchronized static DefaultHttpClient getThreadSafeClient() { 
    if (client != null) 
     return client; 

    client = new DefaultHttpClient(); 
    SchemeRegistry schemeRegistry = new SchemeRegistry(); 
    schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    HttpParams params = new BasicHttpParams(); 
    SingleClientConnManager mgr = new SingleClientConnManager(params, schemeRegistry); 
    client = new DefaultHttpClient(mgr, params); 

    return client; 
} 
} 

इस के बाद मैं बस client.getConnectionManager चलाने() बंद();। onBackPressed(), किसी को मेरी मदद

उत्तर

5

Ok..i मिला समाधान ... मैं इसे स्थापित करने के लिए नहीं किया गया था वापस शून्य पर और कनेक्शन बंद ही वैश्विक कक्षा में किया जा के लिए लगता है ...

3
कृपया कर सकते हैं

मैं वही समस्या का सामना करना पड़ा है, लेकिन

client.getConnectionManager().shutdown() 
client.getConnectionManager() = null 

सेट समस्या हल नहीं कर सकता है।

अंत में, मुझे पता चला है कि, मैं में करीब सभी कनेक्शनों किया onPostExecute है, जो गलत है, तो doInBackgroundमें उन्हें जाने के बाद, यह काम करता है।

आशा इस कोई मदद करता है!

+0

क्लाइंट.getConnectionManager() = null की आवश्यकता क्यों है? असाइनमेंट का बायां हाथ एक चर होना चाहिए – juejiang