My issues is that I am sitting 3 feet from a stable wi-fi access point
and for minutes on end every single URLConnection attempt will fail.
I could certainly understand if maybe the first attempt failed, or
took longer, because I was waiting for the radio to turn on, but 100%
failure for minutes on end is just weird. There is no good reason for
it. It should be considered a bug. And even when it does work, it's
still not 100%, the failure rate is still very high.
This makes for a really crappy application experience, as I simply
cannot predict when my user will see their data update. I feel like
there are reliable ways of communicating, as even when my application
is experiencing errors, I get emails and IMs on the phone, and I can
browse the internet - so somehow the google apps are able to
communicate. That's why I am asking if I am doing something wrong or
if there is some other API I should try. I can try out the Apache
HTTPComponents, but I am assuming they just wrap the lower level java
network APIs. I am not sure what benefit I would get.
On Nov 24, 1:44 pm, "Tom Gibara" <[EMAIL PROTECTED]> wrote:
> I don't know if this is related to what you're experiencing, but it's my
> understanding that the wifi connections shuts down when the phone sleeps. I
> believe this is because, unlike the radio, it requires the CPU to be active
> to maintain the connection.
> Also, contrary to your view, I think it's not intrinsically a hardware or
> software problem. It's simply that in the context of mobile phone software,
> the probability of a connection failure is greater than that you may be used
> to, and due to the necessary limitations in powering the device, simple
> solutions (like constantly striving to maintain a wifi connection) aren't an
> option.
>
> Perhaps a better perspective is to see the various data connections (wifi,
> GPRS, EDGE, 3G etc.) as fallible primitives which you can combine to form a
> more reliable transport suited to your application's needs.
>
> Tom.
>
> 2008/11/24 joshv <[EMAIL PROTECTED]>
>
>
>
> > As I pointed out in my previous post, the polling occurs only when the
> > application is active and on screen. It starts/stops in onResume/
> > onPause - so I am not sure how this is going to limit battery life
> > unless the user forces the application to remain active for hours at a
> > time.
>
> > Could you please explain to me why, with a solid wi-fi signal and
> > connection to a local access point, my URLConnections would ever throw
> > an exception unless there is a problem with the remote website? Are
> > the implementations of these APIs that brittle? Is the hardware
> > really that flaky?
>
> > Are there other APIs that bang on the hardware until it works, without
> > throwing exceptions? Am I doing something wrong? Or is this level of
> > unreliability, even over local wi-fi, to be expected?
>
> > On Nov 24, 10:58 am, Jean-Baptiste Queru <[EMAIL PROTECTED]> wrote:
> > > Even with a 10-second pause between the end of a response and the next
> > > request, you're likely to keep the radio (either cell or wifi) turned
> > > on all the time, since they tend to stay up for about that long even
> > > when there's no activity before powering back down. That could limit
> > > the phone's battery life to as little as 3 or 4 hours (with the screen
> > > constantly off and the CPU idle most of the time).
>
> > > The APIs that you're using are built on top of a foundation that was
> > > designed for environments where the conditions that trigger exceptions
> > > were indeed more exceptional than what you're seeing on a device
> > > indeed. Such is the cost of making Android compatible with APIs that
> > > developers are likely to be familiar with.
>
> > > JBQ
>
> > > On Mon, Nov 24, 2008 at 8:51 AM, joshv <[EMAIL PROTECTED]> wrote:
>
> > > > The polling happens only while the apps is loaded and displayed on
> > > > screen. The second the screen turns off or another app is loaded, the
> > > > polling stops. It's pretty well behaved in that respect. Also, I
> > > > don't hammer the connection 6 times a minute no matter what - each
> > > > thread waits for the previous to finish, waits ten seconds, and then
> > > > attempts to connect.
>
> > > > My issue is that URLConnections seem to be so unreliable that
> > > > Exceptions seem to be the rule, not the exception. This might be
> > > > something unique to my handset, I only have one, so I can't tell. It
> > > > certainly doesn't happen in the emulator. I might expect it to happen
> > > > if I have a marginal 3G or edge connection - but not when the handset
> > > > is literally 3 feet away from the WiFi access point it's using for a
> > > > connection.
>
> > > > On Nov 24, 10:00 am, "Andrew Stadler" <[EMAIL PROTECTED]> wrote:
> > > >> If your code is going to access a site every 10 seconds, the radio is
> > > >> going to, essentially, stay "on" continuously. This is going to have
> > > >> a significant impact on your users' battery life. Is this definitely
> > > >> what you want to do?
>
> > > >> On Mon, Nov 24, 2008 at 5:17 AM, joshv <[EMAIL PROTECTED]> wrote:
>
> > > >> > I am attempting to write an application that regularly polls data
> > from
> > > >> > a publicly available website using a URLConnection. The code is
> > > >> > pretty basic (urlStr contains the URL...)
>
> > > >> > URL url = new URL(urlStr);
> > > >> > URLConnection urlConn = url.openConnection();
> > > >> > urlConn.setConnectTimeout(5000);
> > > >> > BufferedReader in = new BufferedReader(new
> > InputStreamReader
> > > >> > (urlConn.getInputStream()));
> > > >> > String line;
> > > >> > while ((line = in.readLine())!=null) { ....
>
> > > >> > Anyway, even when the G1 is connected to the network (verified in
> > > >> > browser) this block of code will regularly throw
> > > >> > java.net.SocketException: No route to host,
> > > >> > java.net.SocketTimeoutException: Socket is not connected (though
> > this
> > > >> > is probably because I added a timeout), and many times throw an
> > > >> > Exception claiming that it could not resolve the hostname in urlStr
> > -
> > > >> > oddly the web browser has no such issues resolving the name.
>
> > > >> > The above block of code runs every 10 seconds (or longer if the
> > > >> > previous request takes longer), and I'd guess succeeds approximately
> > > >> > 25-50% of the time, though it tends to be a bit streaky. When the
> > > >> > connection succeeds, it take less than a second to connect and
> > > >> > download the data, it's a very small data set - so the timeout
> > setting
> > > >> > should not be an issue.
>
> > > >> > The periods of error do not correspond to a loss of connectivity, as
> > I
> > > >> > can browser the web at the same time the errors are happening. This
> > > >> > happens whether connected to local wi-fi or 3G.
>
> > > >> > Am I doing something wrong, or is network connectivity on the G1
> > just
> > > >> > this flaky?
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---