The Human Interface Guidelines (“HIG”) offers in-depth information and UI resources for mobile platforms. The HIG is full of information that can help to create more compelling, intuitive, and beautiful experiences and design better apps.
Making adept use of threads can help to boost application performance. When an application is launched, it creates the first thread of execution, known as the “main” thread. The main thread is responsible for dispatching events to the appropriate user interface widgets as well as communicating with components from the system UI toolkit.
If an app is stopped on a device, it can save its state and then restore the state when the app is launched again by the user.
Localisation is the process of customising an app to work in other languages other than the default.
Data protection is a feature that is used to secure an app’s files and prevent unauthorised access to them.
UI automation testing is a technique where testing processes are performed using an automation tool.
Device testing is the process by which a device is tested (hardware or software) for its quality to see how well it meets the requirements for which it has been developed.
Mobile app distribution methods
Code signing of an app assures users that it is from a known source and the app hasn’t been modified since it was last signed.
A developer portal (or partner portal) is where developers can sign up, receive support and manage the apps submitted to the store.
Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity.
Sorting is the most common and majorly used algorithms in mobile app development. The basic idea is to arrange the data or items in a definite pattern.
Search algorithm is any algorithm which solves the search problem, namely, to retrieve information stored within some data structure.
The basic idea of encryption is to convert data into a form in which the original meaning is masked, and only those who are properly authorized can decipher it. The AES algorithm successively applies a series of mathematical transformations to each 128-bit block of data. RSA is an asymmetric algorithm that uses a publicly known key for encryption, but requires a different key, known only to the intended recipient, for decryption.
Creational (abstract factory / factory / Builder / Singleton / Lazy / etc.)
Creational design patterns are concerned with the way of creating objects. These design patterns are used when a decision must be made at the time of instantiation of a class (i.e. creating an object of a class).
Structural (adapter / wrapper / Bridge / Decorator / Proxy / Fascade / etc.)
Structural design patterns focus on, how the classes inherit from each other and how they are composed of other classes. Structural patterns use inheritance to compose interface or implementations.
Behavioral (command / iterator / observer / template / etc.)
Behavioral design patterns have focused on the assignment of responsibilities between objects, or, encapsulating behavior in an object and delegating requests to it.
Architectural (DI / MVC / MVP / MVVM / Clean architecture)
Architecture design patterns have focused on the architecture of the application and how responsibilities between different modules/components can be defined based on requirements.
Scrum is a framework utilizing an agile mindset for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies.
Kanban is a workflow management method for defining, managing and improving services that deliver knowledge work. It aims to help visualize work, maximize efficiency, and improve continuously.
The iterative model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete.
Continuous integration (CI) and continuous delivery (CD) is a set of operating principles, and collection of practices that enable mobile development teams to deliver code changes more frequently, reliably and automatically.
Test-driven development is a programming and testing practice that encourages developers to write better and more precise tests and code. For this, they write unit tests before the code of the respective functionality to ensure bug-free software and applications.
Code Review is a process that involves other software developers to review a particular engineer’s code in an effort to check its compliance with standards, identify errors, reveal discrepancies in the style of coding, and test the written code suitability for an objective set.
SOLID is an acronym for five design principles in Object-Oriented software development intended to make software designs more understandable, flexible and maintainable.
Inversion of Control (IoC) is a design principle and is used to invert different kinds of controls in object-oriented design to achieve loose coupling.
Data types specify the different sizes and values that can be stored in the variable.
The loading, linking, and initialization are the initial processes that Java Virtual Machine (JVM) commences as soon as a byte code, called the class file, is loaded into JVM for execution.
The class Object has a protected method called finalize; this method can be overridden by other classes. The particular definition of finalize that can be invoked for an object is called the finalizer of that object.
Exceptions are events that occur during the execution of programs that disrupt the normal flow of instructions.
Java provides a mechanism, called object serialization where an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object. Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the methods for serializing and deserializing an object.
Generics are a facility of generic programming that were added to the Java programming language in 2004 within version J2SE 5.0.
Java garbage collection is the process by which Java programs perform automatic memory management.
Java annotations are used to provide meta data for the Java code.
Lambda calculus is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution.
Kotlin types system differentiates between references which can hold null (nullable reference) and which cannot hold null (non null reference).
Kotlin provides an ability to extend a class with new functionality without having to inherit from the class or use design patterns such as Decorator.
Lambdas Expressions are essentially anonymous functions that can be treated as values
Java has the synchronized keyword, which can be applied to methods to ensure that only one thread at a time can access them.
This library serves as a collection of various Kotlin extensions that simplifies developers life.
Android KTX is a set of Kotlin extensions that are included with Android Jetpack and other Android libraries.
Data Classes represent simple classes used as data containers and do not encapsulate any additional logic.
Visibility modifiers are used to determine what other elements of code have access to the element being modified.
Anonymous objects can be used to define an implementation of an interface or an abstract class without creating a reusable implementation.
An Intent is a messaging object that can be used to request an action from another app component. When is used an implicit intent, the Android system finds the appropriate component to start by comparing the contents of the intent to the intent filters declared in the manifest file of other apps on the device.
An activity is the entry point for interacting with the user. It represents a single screen with a user interface.
A Service is an application component that can perform long-running operations in the background.
A content provider manages access to a central repository of data. A provider is part of an Android application, which often provides its own UI for working with the data.
A broadcast receiver (receiver) is an Android component which allows you to register for system or application events. All registered receivers for an event are notified by the Android runtime once this event happens.
App Widgets are miniature application views that can be embedded in other applications (such as the Home screen) and receive periodic updates.
A process is an executing instance of an application/program and A thread is a path of execution within a process.
Resources are the additional files and static content that your code uses, such as bitmaps, layout definitions, user interface strings, animation instructions, and more.
The support library allows you to use additional functionality.
Deeplinks are a concept that help users navigate between the web and applications.
Android instant apps are native Android apps, which users can experience and use on-the-fly, by simply tapping the URL, without the hassles of downloading the app.
Shortcuts can be displayed in a supported launcher and help users quickly start common or recommended tasks within the app.
Drawable animation gives possibility to load a series of Drawable resources one after another to create an animation.
The Android framework APIs provides a set 2D drawing APIs that allow to render own custom graphics onto a canvas or to modify existing Views to customize their look and feel.
OpenGL is a cross-platform graphics API that specifies a standard software interface for 3D graphics processing hardware. OpenGL ES is a flavor of the OpenGL specification intended for embedded devices.
A bitmap is an object , which is an instance of the Bitmap Class. This class represents a 2d coordinate system. The coordinate system move to the right on the x axis, and to the bottom on the y axis.
The Android framework includes support for various cameras and camera features available on devices, allowing to capture pictures and videos in applications.
Shared Preferences allow to save and retrieve data in the form of key, value pair.
Android provides two types of physical storage locations: internal storage and external storage. On most devices, internal storage is smaller than external storage. However, internal storage is always available on all devices, making it a more reliable place to put data on which an app depends.
On the Android platform, SQLite helps in creating independent databases for apps and helps to store and manage complex, structured app data.
Mobile cloud storage providers offer services that allow the user to create and organize files, folders, music, and photos, similar to other cloud computing models.
Object-relational mapping (ORM) is a programming technique in which a metadata descriptor is used to connect object code to a relational database.
A push notification is a message that pops up on a mobile device.
Android allows to integrate google maps in application. Any location, routes etc can be shown on the map.
Analytics provides free, unlimited reporting in the app to measure user attribution and in-app activity such as screen views, events, in-app purchases, conversions, and more.
With in-app billing, Android users are able to purchase additional content or features such as bonus levels, virtual money, power-ups or boosts, special characters and more from within the app itself.
A Place encapsulates information about a physical location, including its name, address, and any other information we might have about it.
LocationManager is the main class through which your application can access location services on Android.
Firebase is a Backend-as-a-Service (Baas). It provides developers with a variety of tools and services to help them develop quality apps, grow their user base, and earn profit.
Lock implementations provide more extensive locking operations than can be obtained using synchronized methods and statements. Conditions provide a means for one thread to suspend execution (to "wait") until notified by another thread that some state condition may now be true.
A manual thread is any thread an application starts and controls itself.
Android Looper is a Java class within the Android user interface that together with the Handler class to process UI events such as button clicks, screen redraws and orientation switches.
Factory and utility methods for Executor, ExecutorService, ScheduledExecutorService, ThreadFactory, and Callable classes defined in this package.
Besides Queues, this package supplies Collection implementations designed for use in multithreaded contexts: ConcurrentHashMap, ConcurrentSkipListMap, ConcurrentSkipListSet, CopyOnWriteArrayList, and CopyOnWriteArraySet.
A View inside another View creates an hierarchy, the outer view becomes the parent of the inner view and the inner view is its child.
Drawing Events. When a shape overlay is created, two events are fired: an {overlay}complete event; an overlaycomplete event.
The Android standard View class support touch events. Android supports multiple pointers, e.g. fingers which are interacting with the screen.
A ViewGroup is a special view that can contain other views. The ViewGroup is the base class for Layouts in Android, like LinearLayout, RelativeLayout, FrameLayout etc.
Android ListView is a view which groups several items and display them in vertical scrollable list. The RecyclerView is a widget that is more flexible and advanced version of GridView and ListView. It is a container for displaying large datasets which can be scrolled efficiently by maintaining limited number of views. A ViewHolder describes an item view and metadata about its place within the RecyclerView.
The ViewPager is the widget that allows the user to swipe left or right to see an entirely new screen.
Custom views - creating own views. A custom view is a subclass of View, or of any View subclass (such as Button), that extends or replaces its parent's functionality. Custom layout manager can be implemented by extending the ViewGroup class.
The ActionBar is a consistent navigation element that is standard throughout modern Android applications. ToolBar was introduced in Android Lollipop, API 21 release and is the spiritual successor of the ActionBar.
The contextual action mode displays action items that affect the selected content in a bar at the top of the screen and allows the user to select multiple items.
A dialog is a small window that prompts the user to make a decision or enter additional information. A dialog does not fill the screen and is normally used for modal events that require users to take an action before they can proceed. A DialogFragment is a special fragment subclass that is designed for creating and hosting dialogs.
A notification is a message that Android displays outside the app's UI to provide the user with reminders, communication from other people, or other timely information from the app.
Android supports powerful animations for both views and transitions between activities. There are three distinct animation frameworks for Android: Property Animations, View Animations, Transition Animations
This class enables automatic animations on layout changes in ViewGroup objects.
User interface is everything that the user can see and interact with. Material is a design system created by Google to help teams build high-quality digital experiences
There are 3 main areas to this Android build file: apply plugin, buildscript, android.
When building an app, Gradle combines a product flavor configuration from each defined flavor dimension, along with a build type configuration, to create the final build variant.
At build time, Gradle generates the BuildConfig class so the app code can inspect information about the current build.
Gradle models its builds as Directed Acyclic Graphs (DAGs) of tasks (units of work). What this means is that a build essentially configures a set of tasks and wires them together — based on their dependencies — to create that DAG. Once the task graph has been created, Gradle determines which tasks need to be run in which order and then proceeds to execute them.
A Gradle plugin packages up reusable pieces of build logic, which can be used across many different projects and builds.
Gradle can create separate APKs that contain only code and resources specific to each density or ABI.
Dependencies refer to the things that supports in building the project. An Android library is structurally the same as an Android app module. It can include everything needed to build an app, including source code, resource files, and an Android manifest. A multi-project build in Gradle consists of one root project, and one or more subprojects.
The Android Profiler tools provide real-time data to understand how the app uses CPU, memory, network, and battery resources.
The allocation tracker is a tool provided by Android that records an app's memory allocations and lists all allocated objects for the profiling cycle with their call stack, size, and allocating code.
The GPU Debugger helps to analyze and debug OpenGL ES apps. It lets to inspect the GPU state and helps to understand what caused a specific rendering outcome.
Hierarchy Viewer is a tool built into Android Device Monitor that allows to measure the layout speed for each view in the layout hierarchy. It can help to find performance bottlenecks caused by the structure of the view hierarchy.
Lint is a code scanning tool provided by the Android Studio to identify, suggest and correct the wrong or the risky code present in the project.
Android Debug Bridge (ADB) is a utility of command prompt for multi purpose that helps to get access to Android devices.
Android Device Monitor is a stand-alone tool that provides a graphical user interface for several Android application debugging and analysis tools.
Proguard is free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes.
Wear OS apps run directly on a watch, giving you access to hardware such as sensors and the GPU. Wearable apps are similar to other apps that use the Android SDK, but differ in design and functionality.
Android Things let to experiment with building smart, connected device applications.
Android TV is a smart TV operating system based on Android and developed by Google for television sets, digital media players, set-top boxes, and soundbars.
NFC is a technology that enables Bluetooth devices to establish wireless communication with each other by simply touching the devices together.
RxJava is a Java VM implementation of ReactiveX a library for composing asynchronous and event-based programs by using observable sequences.
Dagger 2 is dependency injection framework. It is based on the Java Specification Request (JSR) 330. It uses code generation and is based on annotations. The generated code is very relatively easy to read and debug.
OkHttp is a third-party library developed by Square for sending and receive HTTP-based network requests.
Retrofit is type-safe REST client for Android and Java which aims to make it easier to consume RESTful web services.
Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Glide is an Image Loader Library for Android developed by bumptech and is a library that is recommended by Google. Picasso is an image library for Android. It's created and maintained by Square, and caters to image loading and processing.
Jackson is a high-performance JSON processor for Java. Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Simple is a high performance XML serialization and configuration framework for Java. Its goal is to provide an XML framework that enables rapid development of XML configuration and communication systems.
By creating and running unit tests against the code, it can be verified that the logic of individual units is correct. Running unit tests after every build helps quickly catch and fix software regressions introduced by code changes to the app.
Instrumentation test provides a special test execution environment as launched via the am instrument command, where the targeted application process is restarted and initialized with basic application context, and an instrumentation thread is started inside the application process VM.
Mockito is a mocking framework, JAVA-based library that is used for effective unit testing of JAVA applications.
Espresso is a testing framework for Android to make it easy to write reliable user interface tests. Espresso automatically synchronizes test actions with the user interface of the application.