gtsouk
gtsouk

Reputation: 5273

Detect bad network connectivity on android

I am building an android app that exchanges data with our server through http api calls. In many cases users are complaining that the app is slow or doesn't work at all.

The most common cause of that is bad network connectivity (low 3g/wifi signal or congested public wifi).

What is the best way to detect bad connections? Once i can detect bad connectivity an icon or toast message can be used to inform the user about the situation.

I am using HttpUrlConnection for the api calls.

Upvotes: 1

Views: 5093

Answers (3)

victordzrz
victordzrz

Reputation: 159

I think you can make use of ConnectivityManager. Call getActiveNetworkInfo() and then call getDetailedState() on the NetworkInfo object received. You can check the state of the connection and whether it is VERIFYING_POOR_LINK, though I don't know in which conditions this state is active.

Also you might want to listen to network changes as described in Detect Connection Changes.

Upvotes: 7

Nokdu
Nokdu

Reputation: 98

as far as i remember http is "connectionless"..

you should try concentrating on minimizing the size of your traffic.. (compress, divide.. etc)

if you really want to test connectivity i guess you should do pings.. every x seconds.. then if the ping is bad you could warn the user..

Upvotes: 1

Gabe Sechan
Gabe Sechan

Reputation: 93726

I'd probably use latency. Save the time when you get the request, and when the request finishes. If you're seeing numbers that are too high, pop up the warning. If you're downloading large files, you may wish to switch to throughput (how many kbps you're transfering).

Upvotes: 1

Related Questions