Application Fundamentals
You can write your Android app code using Kotlin, Java, and C++ languages and then Android SDK tools compile your code along with any data and resource files into an APK.
Android security features:
- Multi-user Linux system => each app is a different user.
- Unique Linux user ID for each app.
- Each process has its own virtual machine.
Each app in Android system has only access to the components that it requires to do its work and there are a ways for sharing the data between the app and the other apps like:
- Share the same Linux user ID
- Request permission to access device data such as the Camera.
App components

- Activity: It is the the UI of the Android App.
- Services: We use the services to add logic to our apps.
- Broadcast receivers: using to deliver events to the app outside of a regular user flow.
- Content providers: Manages a shared set of app data that you can store in the file system.
Activating components
Intent is an object use to bind individual components to each other at runtime.
Methods for activating components:
-
When you want the activity to return a result you can pass Intent to startActivity() or startActivityForResult().
-
When you want to give new instructions to an ongoing service, you can pass passing an Intent to startService().
-
When you want to initiate a broadcast, you can by passing an Intent to methods such as sendBroadcast().