Connectivity API, cache-then-network, graceful degradation.
Detecting Connectivity
bool isOnline = Connectivity.Current.NetworkAccess == NetworkAccess.Internet;
// React to changes in real time
Connectivity.Current.ConnectivityChanged += (s, e) => {
bool online = e.NetworkAccess == NetworkAccess.Internet;
OnConnectivityChanged(online);
};
Cache-Then-Network Pattern
public async Task<List<Article>> GetArticlesAsync()
{
// 1. Show cached data immediately (instant response)
var cached = await _db.GetArticlesAsync();
if (cached.Any()) Articles = new ObservableCollection<Article>(cached);
// 2. Return early if offline
if (Connectivity.Current.NetworkAccess != NetworkAccess.Internet)
return cached;
// 3. Fetch fresh data, update cache
try
{
var fresh = await _api.FetchArticlesAsync();
await _db.SaveArticlesAsync(fresh);
return fresh;
}
catch { return cached; } // network error — fall back to cache
}
Key Takeaways
Connectivity.Current.NetworkAccess tells you the current internet status
Subscribe to ConnectivityChanged to react when the user goes online/offline
Cache-then-network shows data instantly then refreshes in the background
Never show a blank screen on network failure — always serve cached data