// build.gradle.kts
// implementation("com.google.firebase:firebase-database")
val database = FirebaseDatabase.getInstance()
val usersRef = database.getReference("users")
// Write
usersRef.child("alice").setValue(User("Alice", 30))
// Read (one-time)
usersRef.child("alice").get().addOnSuccessListener { snapshot ->
val user = snapshot.getValue(User::class.java)
}
// Read (realtime)
usersRef.child("alice").addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val user = snapshot.getValue(User::class.java)
// Update UI
}
override fun onCancelled(error: DatabaseError) {
println("Database error: ${error.message}")
}
})
Connectivity Monitoring
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
// Check current state
val network = connectivityManager.activeNetwork
val capabilities = connectivityManager.getNetworkCapabilities(network)
val isOnline = capabilities?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) == true
// Observe changes
val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
println("Network available")
}
override fun onLost(network: Network) {
println("Network lost")
}
}
connectivityManager.registerDefaultNetworkCallback(networkCallback)
Exercise: Create an app that fetches and displays a list of posts from JSONPlaceholder API using Retrofit. Each item shows the post title. Tapping an item shows the full post in a detail screen. Add pull-to-refresh, error handling with retry, and offline caching using Room as a cache layer.