How to Observe Network Connection Status
In this article, we are going to listen to the changes in the status of the network connection.
A Demo
This is an example demonstrating the use of the snippet.
I have updated the UI when the network status changes. A “No Connection” message is shown when there is no network and as the network is back “Back Online” is shown.
The Snippet We Are Going to Use
We are going to use the snippet NetworkUtils
which is going to help us to observe changes in the network connection status.
How It Works
Inherits NetworkCallback
In this snippet, we have created an object NetworkUtils
which inherits from ConnectivityManager.NetworkCallback()
.
As per the Android Developer documentation, ConnectivityManager.NetworkCallback()
is:
Used for notifications about network changes. Should be extended by applications wanting notifications.
Registers NetworkCallback
In our getNetworkLiveData()
function we are registering the NetworkCallback
so that we can listen to the network state changes and receive notifications. The callbacks will continue to be called until either the application exits or unregisterNetworkCallback()
is called.
Updates networkLiveData
We have created a new MutableLiveData member named networkLiveData
that can be observed through the function getNetworkLiveData()
. We are updating the networkLiveData
through the overridden functions onAvailable()
and onLost()
. Whenever the network is available networkLiveData
is set to true and whenever it is lost networkLiveData
is set to false.
How to Use It
For using our NetworkUtils
to check the availability of internet connection, we should observe the LiveData in our View i.e. Activity or Fragment.
We should handle our UI state according to the boolean value of isConnected
.
Furthermore, we should add the following permission in our AndroidManifest.xml
file for accessing the network state.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Thank you for reading. Hope it helped you! Have a great day and happy coding :)
References
I stumbled upon this code while going through different awesome repos in Github. Here is the link to the repo that contains this code. This repo belongs to PatilShreyas. Feel free to follow him on Github and check his awesome repos.