[android-developers] Re: HttpClient routine works but w/o connection, it times out?

2010-09-18 Thread davemac
In addition to putting your http calls into a separate thread, you
could also add HttpParams to your HttpGet object to set timeouts, both
for the connection and for the operation. Something like the
following:

HttpParams params = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(params, 2000);// 2
seconds
HttpConnectionParams.setSoTimeout(params, 15000); // 15 seconds

httpget.setParams(params);

If a timeout occurs during execute(), you'll get an IOException,
technically a subclass of IOException depending on which timeout
tripped.

- dave
www.androidbook.com

On Sep 17, 9:39 pm, Indicator Veritatis mej1...@yahoo.com wrote:
 Indeed! Why, one of the major benefits of using HttpClient instead of
 barebones java.net methods is that it makes  it easy to move all the
 HTTP waiting -out- of the UI main thread.

 See, for example, how the authors of Unlocking Android have done
 this in the sample code for chapter 6 
 athttp://code.google.com/p/unlocking-android/
 .

 See especially the class HTTPRequestHelper in HTTPHelperForm.java in
 NetworkExplorer, since this class 'wraps' HttpClient.

 Of course, to get a full explanation of how this separation works, you
 need to buy and read the book;)

 NB: their approach is noticeably different from Mark Murphy's
 solution. They use the Looper and Handler, which they call the Swiss-
 Army knife of threading in Android.

 This approach may appear a little dated compared to AsyncTask, but at
 least this way you learn to use the Swiss-Army knife, instead of
 becoming dependent on AsyncTask. One should expect the Swiss-Army
 knife to be more widely applicable than AsyncTask.

 Besides: it is a good exercise to rewrite it to use AsyncTask in place
 of Looper/Handler or vice versa.

 On Sep 17, 1:04 pm, Kostya Vasilyev kmans...@gmail.com wrote:

    John,

  It's not a good idea to do networking on the UI thread. As you found
  out, if there is a delay, for reasons that you can't control, the user
  gets the ANR dialog (application not responding).

  Take a look at several options offered by Android to move your
  networking code to a worker thread:

  - AsyncTask
  - IntentService

  - An improvement upon IntentService, developed by Mark Murphy:
  WakefulIntentService

  -- Kostya

  17.09.2010 23:59, john brown пишет:

   It does however display the error Application MyApp (in process
   mnt.android.myapp.MA103) is not responding. along with a Force Close
   button and a Wait button. If I wait a moment and press the Wait
   button, the app proceeds like it should.

   What can I do to avoid the long wait (and error) when there is no
   service?

  --
  Kostya Vasilyev -- WiFi Manager + pretty widget 
  --http://kmansoft.wordpress.com

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


[android-developers] Re: HttpClient routine works but w/o connection, it times out?

2010-09-17 Thread Indicator Veritatis
Indeed! Why, one of the major benefits of using HttpClient instead of
barebones java.net methods is that it makes  it easy to move all the
HTTP waiting -out- of the UI main thread.

See, for example, how the authors of Unlocking Android have done
this in the sample code for chapter 6 at 
http://code.google.com/p/unlocking-android/
.

See especially the class HTTPRequestHelper in HTTPHelperForm.java in
NetworkExplorer, since this class 'wraps' HttpClient.

Of course, to get a full explanation of how this separation works, you
need to buy and read the book;)

NB: their approach is noticeably different from Mark Murphy's
solution. They use the Looper and Handler, which they call the Swiss-
Army knife of threading in Android.

This approach may appear a little dated compared to AsyncTask, but at
least this way you learn to use the Swiss-Army knife, instead of
becoming dependent on AsyncTask. One should expect the Swiss-Army
knife to be more widely applicable than AsyncTask.

Besides: it is a good exercise to rewrite it to use AsyncTask in place
of Looper/Handler or vice versa.

On Sep 17, 1:04 pm, Kostya Vasilyev kmans...@gmail.com wrote:
   John,

 It's not a good idea to do networking on the UI thread. As you found
 out, if there is a delay, for reasons that you can't control, the user
 gets the ANR dialog (application not responding).

 Take a look at several options offered by Android to move your
 networking code to a worker thread:

 - AsyncTask
 - IntentService

 - An improvement upon IntentService, developed by Mark Murphy:
 WakefulIntentService

 -- Kostya

 17.09.2010 23:59, john brown пишет:

  It does however display the error Application MyApp (in process
  mnt.android.myapp.MA103) is not responding. along with a Force Close
  button and a Wait button. If I wait a moment and press the Wait
  button, the app proceeds like it should.

  What can I do to avoid the long wait (and error) when there is no
  service?

 --
 Kostya Vasilyev -- WiFi Manager + pretty widget 
 --http://kmansoft.wordpress.com

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