🌐 Networking & APIs
Offline-First & Caching
Connectivity API, cache-then-network, graceful degradation.

Detecting Connectivity

csharp
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

csharp
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
Lesson 25 of 30Networking & APIs
← Previous Next Lesson →