Now I am not able to find a way to increase max no of connections per
host in android...

Anurag

On Jul 9, 3:34 pm, Anurag Singh <[email protected]> wrote:
> Hi,
>
> I have an http client based on multi-threaded model of apache http
> components in my App. And I want to achieve spontaneous cancellation
> of http get requests from my Android app.
>
> A new executor thread is started for each http request and the Thread
> and the HttpGet is saved in a thread safe queue. When abort is
> requested (on pressing back on the progress dialog and when starting a
> new activity) - another thread is started which goes through the queue
> of Threads and HttpGet and attempts to terminate them (code below).
>
> While the HttpGet gets aborted successfully, the Threads go into
> 'native' state. They only time out giving SocketTimeoutException after
> a default interval. The threads end up this way on most cancellations.
> Is this something to be expected or I am hitting a bug?
>
> The issue is that And as soon as 2 threads enter this state, all
> further executor threads go into wait. Only when either of the 2
> blocked threads time out, other executors get a chance (this seems to
> be the default behavior of http). I have have tried many different
> thing but I am unable to budge the 'stuck' threads.
>
> I think the problem can be easily overcome by increasing the total no
> of threads and threads per host -- but I am not sure if this will be a
> correct thing to do (because the socket resources will stay occupied
> till timeout and there is nothing theoretically that can stop a user
> to do infinite cancellations)? Even if this is -- for Android, what
> should be the number?
>
> Now I am also doubting if my abort strategy is flawed. Can anyone
> please commentor let me know of a fool-proof abort strategy?
>
> - - -
>
> Run method of the abort thread is like:
> public void run() {
>                         while (!stopQueue.isEmpty()) {
>                                 final List<Object> stopRequest = 
> stopQueue.remove();
>                                 HttpGet abortRequest = (HttpGet) 
> stopRequest.get(0);
>                                 Thread abortThread = (Thread) 
> stopRequest.get(1);
>
>                                 // first abort the request
>                                 if (abortRequest != null && 
> !abortRequest.isAborted()) {
>                                         abortRequest.abort();
>                                         Log.d("Aborting", 
> abortRequest.getURI().toString());
>                                 }
>
>                                 // if the thread is still stuck -- interrupt 
> it
>                                 if (abortThread != null && 
> abortThread.isAlive()) {
>                                         abortThread.interrupt();
>                                         Log.d("Interrupting", 
> abortThread.getName());
>                                 }
>                         }
>                 }
>
> Thanks
> Anurag

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to