Network calls let your app get fresh information from the internet. This helps your app show up-to-date data that is not stored on the device.
When your app needs to show the latest news or weather updates.
When users log in and you need to check their credentials on a server.
When your app displays social media posts or messages from friends.
When you want to download images or videos from a website.
When syncing user data between devices or cloud storage.
Syntax
Android Kotlin
val url = URL("https://example.com/data.json")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
val inputStream = connection.inputStream
val data = inputStream.bufferedReader().readText()
Use HttpURLConnection to open a connection to a web address.
Always perform network calls on a background thread to avoid freezing the app UI.
Examples
This example fetches user data from a web API using a GET request.
Android Kotlin
val url = URL("https://api.example.com/users")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
val response = connection.inputStream.bufferedReader().readText()
This example downloads an image file from the internet.
Android Kotlin
val url = URL("https://example.com/image.png")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
val imageStream = connection.inputStream
Sample App
This app fetches a small JSON object from the internet and shows it on the screen. It uses a background thread to avoid freezing the app.
Android Kotlin
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.net.HttpURLConnection
import java.net.URL
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val textView = TextView(this)
setContentView(textView)
CoroutineScope(Dispatchers.IO).launch {
val url = URL("https://jsonplaceholder.typicode.com/todos/1")
val connection = url.openConnection() as HttpURLConnection
connection.requestMethod = "GET"
val data = connection.inputStream.bufferedReader().readText()
runOnUiThread {
textView.text = data
}
}
}
}
OutputSuccess
Important Notes
Never do network calls on the main thread; it will freeze the app.
Always check for internet connection before making network calls.
Handle errors like timeouts or no response gracefully to improve user experience.
Summary
Network calls let apps get fresh data from the internet.
They are used when data changes often or is too big to store locally.
Always run network calls on background threads to keep the app smooth.
Practice
(1/5)
1. Why do mobile apps use network calls to fetch data from the internet?
easy
A. To get the most up-to-date information that changes frequently
B. To save battery by avoiding local storage
C. To make the app run faster without internet
D. To store data permanently on the device
Solution
Step 1: Understand the purpose of network calls
Network calls are used to get fresh data from the internet, especially when data changes often.
Step 2: Compare options with this purpose
Only To get the most up-to-date information that changes frequently matches this reason; others are incorrect because network calls do not save battery or store data locally.
Final Answer:
To get the most up-to-date information that changes frequently -> Option A
Quick Check:
Network calls fetch fresh data = A [OK]
Hint: Network calls get fresh data from internet, not local storage [OK]
Common Mistakes:
Thinking network calls save battery
Assuming network calls store data locally
Believing network calls make app work offline
2. Which Kotlin code snippet correctly starts a network call on a background thread?
easy
A. fetchDataFromNetwork()
B. Thread.sleep(1000); fetchDataFromNetwork()
C. runOnUiThread { fetchDataFromNetwork() }
D. GlobalScope.launch { fetchDataFromNetwork() }
Solution
Step 1: Identify correct background thread usage in Kotlin
Using GlobalScope.launch starts a coroutine on a background thread for network calls.
Step 2: Check other options for thread usage
fetchDataFromNetwork() runs on main thread, runOnUiThread { fetchDataFromNetwork() } forces main thread, Thread.sleep(1000); fetchDataFromNetwork() just delays but runs on main thread.
Final Answer:
GlobalScope.launch { fetchDataFromNetwork() } -> Option D
Quick Check:
Background thread with coroutine = B [OK]
Hint: Use coroutines (launch) for background network calls in Kotlin [OK]
Common Mistakes:
Calling network on main thread causing app freeze
Using runOnUiThread for network calls
Using Thread.sleep to delay network calls
3. What will this Kotlin code print if the network call returns "Hello" asynchronously?
GlobalScope.launch {
val result = fetchDataFromNetwork()
println(result)
}
println("Done")
The println("Done") runs immediately on main thread before coroutine finishes.
Step 2: Determine print order
Coroutine prints "Hello" after network call completes, so output is "Done" then "Hello".
Final Answer:
Done\nHello -> Option B
Quick Check:
Async coroutine prints after main thread = A [OK]
Hint: Main thread prints first, coroutine prints after network call [OK]
Common Mistakes:
Assuming coroutine blocks main thread
Expecting prints in code order
Ignoring asynchronous nature of network calls
4. Identify the error in this Kotlin code that fetches data from network:
fun fetch() {
val data = fetchDataFromNetwork()
println(data)
}
fun fetchDataFromNetwork(): String {
Thread.sleep(2000)
return "Data"
}
medium
A. Thread.sleep is not allowed in Kotlin
B. fetchDataFromNetwork() returns wrong data type
C. Network call is blocking main thread causing app freeze
D. println cannot print strings
Solution
Step 1: Analyze fetchDataFromNetwork() behavior
Thread.sleep(2000) blocks the thread it runs on, here main thread, freezing UI.
Step 2: Understand impact on app
Blocking main thread causes app to freeze, so network calls must run on background thread.
Final Answer:
Network call is blocking main thread causing app freeze -> Option C
Quick Check:
Blocking main thread with sleep = C [OK]
Hint: Never block main thread with network calls or sleep [OK]
Common Mistakes:
Ignoring UI freeze caused by blocking calls
Thinking Thread.sleep is forbidden syntax
Assuming println cannot print strings
5. You want to fetch a large list of user data from a server that updates every minute. Which approach is best to keep your Android app smooth and up-to-date?
hard
A. Use background network calls with caching and refresh every minute
B. Fetch data on main thread every time user opens screen
C. Avoid network calls and use static data bundled in app
D. Fetch data once at app start and store locally forever
Solution
Step 1: Consider data freshness and app performance
Data updates every minute, so app needs fresh data regularly without freezing UI.
Step 2: Evaluate options for smoothness and freshness
Use background network calls with caching and refresh every minute uses background calls with caching and periodic refresh, balancing smooth UI and fresh data.
Final Answer:
Use background network calls with caching and refresh every minute -> Option A
Quick Check:
Background fetch + caching = D [OK]
Hint: Combine background fetch with caching for smooth, fresh data [OK]
Common Mistakes:
Fetching on main thread causing freezes
Not refreshing data causing stale info
Using static data ignoring updates
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.