Application Fundamentals
Android applications are written in Java programming language, compiled into a *.apk file
- Each application is assigned an unique Linux User ID by default, which is unknown to itself.
- Each application runs in its own process and has its own virtual machine(Dalvik)
However, two applications can have the same User ID for the purpose of sharing data and they can run in the same process and share the same VM. An application must be granted permission to access device data by the user at install time.
Application Components
Components are the essential building blocks of an application. Not all components are entry points for the user. Here are four different types of components:
- Activity
- represents a single screen view. see http://developer.android.com/guide/topics/fundamentals/activities.html
- Service
- runs in backend, performs long-running operations. see http://developer.android.com/guide/topics/fundamentals/services.html
- Content provider
- manages a shared set of app data. see http://developer.android.com/guide/topics/providers/content-providers.html
- Broadcast receiver
- respond to system-wide broadcast announcement.
Each application cannot activate other application component directly, it deliver a message to the system specifying which component it want to start.
Activity, Service and Broadcast are activated by asynchronouns message, whereas Content provider is activated by Content resolver. Here are the ways:
- pass Intent to startActivity, startActivityForResult
- pass Intent to startService, bindService
- pass Intent to sendBroadcast, sendOrderedBroadcast or sendStickyBroadcast
- calling query on ContentResolver
Manifest
a description of the application, to inform the system about the application, including component capabilities, requirements.
Resource
non-code resources, all are referenced by a generated ID