File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Android and the fly likes Multi-threading Android Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Mobile » Android
Bookmark "Multi-threading Android" Watch "Multi-threading Android" New topic
Author

Multi-threading Android

Renjith Mohan
Ranch Hand

Joined: Nov 28, 2008
Posts: 65

I have a server call to fetch JSON response. Here is the code snippet.


convertStreamToString(InputStream) read json text from the stream and returns a string text. For holding the state of the user session, same httpClient reference is being used.



The problem arises when a service starts working. It accesses the httpclient object and in turn InputStream instance. By the time, the user moves to other screen, putting service to run background. Exception is thrown when InputStream already in use is called for.



The reason being, the socket is still used by the Service class. I have heard of ThreadSafeClientConnManager class. However, not really sure if it suits in here.

Any thoughts?

Let me know in case you need more details.

Thanks in advance!
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42930
    
  68
Since the javadocs don't mention that DefaultHttpClient is thread-safe, you should assume that it is not. Use a separate instance for each concurrent client.
Renjith Mohan
Ranch Hand

Joined: Nov 28, 2008
Posts: 65

Yes I am. I use AsyncTask for each function. The issue seems to be here



I am not creating new HttpClient instance for every server operation. Instead use the same instance to hold user session details. On the other side, ThreadSafeClientConnManager allows me have a multi threaded environment. How could I manage user session?

Thanks in advance!
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 42930
    
  68
How could I manage user session?

By using separate HttpClient objects for each user.
 
 
subject: Multi-threading Android