Activities - An activity is the entry point for interacting with the user. It represents a
single screen with a user interface
Services - A service is a general-purpose entry point for keeping an app running in the
background for all kinds of reasons. It is a component that runs in the background to perform
long-running operations or to perform work for remote processes
Broadcast receivers - A broadcast receiver is a component that enables the system to
deliver events to the app outside of a regular user flow, allowing the app to respond to
system-wide broadcast announcements.
Content providers - A content provider manages a shared set of app data that you can
store in the file system, in a SQLite database, on the web, or on any other persistent storage
location that your app can access. Through the content provider, other apps can query or
modify the data if the content provider allows it.
What is an intent?
The core components of an application, such as its activities, services, and broadcast
receivers, are activated by intents. An intent is a bundle of information (an Intent object)
describing a desired action, including the data to be acted upon, the category of component that
should perform the action, and other pertinent instructions. The Android system locates an
appropriate component that can respond to the intent, launches a new instance of the component
if one is needed, and passes it the Intent object.
Devices displays a list of all devices (with the serial number) connected to the host computer
Format formats a specific partition; the file system of the partition must be recognized by the
device
Android NDK - Libraries written in C/C++ can be compiled to ARM, MIPS or x86 native
code (or their 64-bit variants) and installed using the Android Native Development Kit (NDK).
These native libraries can be called from Java code running under the Dalvik VM using
the System.loadLibrary call, which is part of the standard Android Java classes.
Android Open Accessory Development Kit - The Android 3.1 platform (also backported to
Android 2.3.4) introduces Android Open Accessory support, which allows external USB
hardware (an Android USB accessory) to interact with an Android-powered device in a special
"accessory" mode. When an Android-powered device is in accessory mode, the connected
accessory acts as the USB host (powers the bus and enumerates devices) and the Android-
powered device acts as the USB device. Android USB accessories are specifically designed to
attach to Android-powered devices and adhere to a simple protocol (Android accessory protocol)
that allows them to detect Android-powered devices that support accessory mode.
Native Go support - Since version 1.4 of the Go programming language, writing
applications for Android is supported without requiring any Java code, although with a restricted
set of Android APIs.
What is an AVD?
An Android Virtual Device (AVD) is an emulator configuration that allows developers to
test the application by simulating the real device capabilities. We can configure the AVD by
specifying the hardware and software options. AVD manager enables an easy way of creating
and managing the AVD with its graphical interface. We can create as many AVDs as we need,
based on the types of device we want to test for
AVD is Consist of :
Hardware Profile - he hardware profile defines the characteristics of a device as shipped
from the factory. The AVD Manager comes preloaded with certain hardware profiles,
such as Pixel devices, and you can define or customize the hardware profiles as needed.
System Image - We recommend that you create an AVD for each system image that your
app could potentially support based on the <uses-sdk> setting in your manifest.
Storage area - The AVD has a dedicated storage area on your development machine. It
stores the device user data, such as installed apps and settings, as well as an emulated SD
card. If needed, you can use the AVD Manager to wipe user data, so the device has the
same data as if it were new.
Skin - An emulator skin specifies the appearance of a device. The AVD Manager
provides some predefined skins. You can also define your own, or use skins provided by
third parties.
AVD and app features - Be sure your AVD definition includes the device features your
app depends on. See Hardware Profile Properties and AVD Properties for lists of features
you can define in your AVDs.
4 Phases of the Application Workflow
Inception - The primary goal of the Inception phase is to establish the case for the viability
of the proposed system.
Elaboration - The primary goal of the Elaboration phase is to establish the ability to build the
new system given the financial constraints, schedule constraints, and other kinds of constraints
that the development project faces.
Construction - The primary goal of the Construction phase is to build a system capable of
operating successfully in beta customer environments.
Transition - The primary goal of the Transition phase is to roll out the fully functional system
to customers. During Transition, the project team focuses on correcting defects and modifying
the system to correct previously unidentified problems.
3 Ways to set up Virtual Device
Step 1 - Download the Android SDK
Step 2 - Install Android Platforms
Step 3 - Create a Virtual Device and run the emulator
What is an Android Inject?
Dependency injection is a technique whereby one object supplies the dependencies of
another object. A dependency is an object that can be used (a service). An injection is the passing
of a dependency to a dependent object (a client) that would use it. The service is made part of the
client's state.[1] Passing the service to the client, rather than allowing a client to build or find the
service, is the fundamental requirement of the pattern.This fundamental requirement means that
using values (services) produced within the class from new or static methods is prohibited. The
class should accept values passed in from outside. This allows the class to make acquiring
dependencies someone else's problem. The intent behind dependency injection is
to decouple objects to the extent that no client code has to be changed simply because an object it
depends on needs to be changed to a different one.