Android Interview Questions
Android Interview Questions
3. What are the primary features of Android?
The following are the primary features of Android:
Customizability
Multitasking
Robust notification system
Google Play Store
Security
Google services integration
4. What do you understand by activity in Android?
An activity in Android is a component representing a single screen with a UI(User
Interface). It is a fundamental building block of an Android application. It provides a
window where the user can interact with the application.
5. What do you mean by a fragment in Android?
A fragment in Android is a modular section of the activity. It represents a portion of
the UI and the behavior of the application. Fragments are used to address the
challenge of developing UIs. They can adapt to different screen sizes and
orientations.
6. What is a layout in Android, and what are its different types?
A layout in Android is a collection of UI(User Interface) controls. UI controls can be
buttons, text fields, images, and other widgets, that are arranged on the screen. A
layout defines how these UI controls are positioned and sized on the screen. It
provides the structure for the user interface of an Android application.
There are several types of layouts in Android:
1. LinearLayout
2. RelativeLayout
3. ConstraintLayout
4. FrameLayout
5. TableLayout
These messages are sent by the Android system or by other applications on the
device. They indicate changes in the device's state, such as the device's battery
level, network connectivity, or incoming phone calls.
10. What is the context in Android?
The context in Android is an abstract class. The class provides access to application-
specific resources and services. It represents the current state of the application or
activity. It also gives information about its environment, resources, and other system-
level services.
Intermediate Level Android Interview Questions
11. What do you mean by intent and its types in Android?
An Intent in Android is a messaging object. It is used to communicate between
different components of an application or between various applications. It represents
an action that needs to be performed, along with the necessary data and other
information required to perform the action. It can be used to start activities, services,
and broadcasts.
There are two primary types of intents in Android:
1. Explicit Intent: It starts a specific component of an application, such as
an activity or service, by specifying the class name of the component to
be started.
2. Implicit Intent: It starts a component that can handle a specific
action, regardless of its class name.
12. Explain the differences between Serializable and Parcelable interfaces in
Android.
Serializable and Parcelable are interfaces in Android. They allow you to serialize and
deserialize objects. So they can be passed between different components of an
application. However, there are some differences between them, which are
mentioned below.
Serializable interface Parcelable interface
When you serialize an object using Parcelable is generally faster than Serializable
Serializable, it creates a lot of temporary because it generates less garbage and involves less
objects, which can negatively impact reflection. It is designed to be more efficient and can
performance in some cases. be faster in situations where performance is a
concern.
It is less efficient than the Parcelable interface It is more efficient than Serializable. It generally
because it carries huge data streams. produces smaller data streams.
When you implement Serializable, you don't It requires you to write custom code to handle the
have to write any special methods, but the serialization and deserialization process. This gives
serialization and deserialization process is you more control over how the object is serialized
handled entirely by the Java serialization and can allow you to optimize the process for
system. performance.
Serializable is compatible with Java, so you It is specific to Android and can only be used within
can use it to pass objects between Android and the Android framework.
non-Android systems.
13. What is the Android Manifest file, and what is its purpose?
The Android Manifest file is an XML(Extensible Markup Language) file. It provides
essential information about an Android app for the Android OS. It is named
"AndroidManifest.xml" and is located in the root directory of an Android project.
is doInBackground().
15. Explain the differences between a thread and a process in Android.
A thread and a process are two distinct concepts in Android that are used for
different purposes. A thread is a lightweight unit of execution within a process. On
the other hand, a process is a self-contained instance of an application or service. It
runs in its own memory space, with its own virtual machine (VM).
The following are the differences between them:
Thread Process
It shares resources with the parent process, which It requires more resources (such as memory) than a
can make them more efficient in terms of thread, as each process has its own set of resources.
resource usage.
Threads within a process share the same memory Each process is isolated from other processes,
space, which can make them vulnerable to bugs which provides better security and fault isolation.
and security issues.
Switching between threads is faster, as threads Switching between processes is slower than
share the same memory space and VM. switching between threads, as each process has its
own memory space and VM.
16. What is a content provider in Android?
Content provider in Android is a component that handles a shared set of app data. It
allows you to safely share data between different applications in a standardized and
secure way. They enable different apps to access, query, and modify the data stored
in the same database or file without exposing the underlying implementation details.
Content Providers use a set of standardized interfaces. They use them to define how
data can be accessed and modified. These interfaces are based on the CRUD
(Create, Read, Update, Delete) operations that are commonly used in database
management. Content Providers provide a standard, secure, and well-structured way
for applications to access data.
17. What is an SQLite database in android?
SQLite is a lightweight RDBMS(Relational Database Management System), a
software library included as a part of the Android OS. It provides a mechanism for
storing and retrieving structured data. These are used in Android applications to
store application data, such as user preferences, settings, and other data that needs
to be persisted across application runs.
SQLite databases are stored in a file on the device's file system. Any application can
have multiple SQLite databases. Each database can have multiple tables, which are
used to organize the data. The data in an SQLite database is stored in rows and
columns, much like in a spreadsheet.
18. What do you understand by the life cycle of Android activity?
The Android activity lifecycle describes how activity transitions are happening
through different states as it is created, used, and destroyed. There are different
states that an activity can be in. Each state with its own set of callbacks can be used
to handle specific events.
The following is the sequence of lifecycle events for an activity:
onCreate()
onStart()
onResume()
onPause()
onStop()
onRestart()
onDestroy()
By using these lifecycle methods, an Android app can gracefully handle different
user interactions and system events and ensure that the app is efficient and
responsive at all times.
19. What is a Toast in Android, and how do we create a Toast in Android?
A Toast in Android is a small pop-up message. It displays a short message to the
user. It is used to show feedback or notification to the user without blocking the
user's interaction with the application. To create a Toast in Android, you can use the
Toast class. This class is available under android.widget package. The following
steps outline the basic process of creating and displaying a Toast:
1. Create a Toast object using the method Toast.makeText(). This method
takes three parameters. The parameters are the application context, the
message to display, and the duration for which the message should be
displayed.
2. Call the method show() on the Toast object to display the message.
Here is an example code snippet demonstrating how to create and display a simple
Toast message:
// create a Toast object with a short duration and a message to display
Toast.makeText(getApplicationContext(), "Hello, Ninjas. This is a toast",
Toast.LENGTH_SHORT).show();
20. What do you mean by application and activity context in Android?
The Application context is a global context. It is available throughout the application's
lifecycle. It is used to access application-level resources. The resources can be the
application's assets or database. You can usually obtain the application context by
calling the getApplicationContext() method from the application's class.
On the other hand, the Activity context is a context that is tied to the lifecycle of an
activity. It is used to access resources and services. Those resources and services
are specific to an activity, such as UI widgets, layouts, and preferences. You can
obtain the activity context usually by calling this keyword from the activity's class.
Advance Level Android Interview Questions
21. What are some standard techniques for optimizing the performance of an
Android application?
Optimizing the performance of an Android application is very crucial for providing a
good user experience.
There are some standard techniques for optimizing the performance of an Android
application:
Reducing the number of layout hierarchies: The more complex the
layout hierarchy is, the more time it takes to draw and display the user
interface. Therefore, it is essential to keep the layout hierarchy as simple
as possible.
Avoid creating unnecessary objects: Creating objects can be very
much expensive in terms of memory and CPU time. To avoid creating
unnecessary objects, you should reuse objects wherever possible.
Using asynchronous operations: Long-running operations, such as
network requests or database queries. These should be performed
asynchronously to avoid blocking the UI thread.
Use the proper data structure: Choosing the right data structure is
essential for the performance of your application.
Reduce the memory footprint of your application: The less memory
your application uses, the less likely it is to be killed by the system.
22. Explain the differences between targetSdkVersion and
compileSdkVersion?
In Android development, there are two important version numbers that you need to
specify in your app's build.gradle file. These are
compileSdkVersion
targetSdkVersion
These sensors are built into most modern Android devices and can include sensors
such as:
Accelerometer: It detects the changes in the device's acceleration and
orientation.
Gyroscope: It detects changes in the device's rotation and orientation.
Magnetometer: It detects changes in the device's magnetic field.
Proximity sensor: It detects when an object is nearby and adjusts the
device's behavior accordingly.
Light sensor: It detects changes in the ambient light levels and adjusts
the device's brightness according to it.
Barometer: It measures air pressure and can be used to determine
altitude and weather conditions.
Temperature sensor: It measures the temperature of the device.
These sensors can be accessed through the Android Sensor API. It provides
developers with a simple and consistent way to access the data from these sensors.
Developers can use this data to create various applications.
24. What do you mean by a custom view in Android?
A custom view in Android is a user-defined component. It extends the capabilities of
the built-in Android view classes. These views allow developers to create unique and
customized UI components that are unavailable in the standard Android SDK.
A custom view is created by extending an existing view class, such as View,
TextView, or Button. It implements custom drawing and interaction behavior. This
can involve creating a new layout, creating custom attributes, and defining custom
event-handling logic.
25. What do you understand by RecyclerView in Android?
A RecyclerView in Android is a flexible and efficient view for displaying large data
sets, such as lists or grids. It was introduced in Android Lollipop to improve the older
ListView and GridView. It provides many benefits over these earlier implementations.
The RecyclerView is designed to be highly customizable. It provides a number of
features that make it suitable for use in a variety of applications. Some of its primary
key features are:
Reuse of views
Layout managers(such as LinearLayoutManager, GridLayoutManager,
and StaggeredGridLayoutManager)
Item decorations
Item animations
Adapter-based data binding
26. What do you mean by an adapter in Android, and why do we need this?
An adapter in Android is a necessary component that connects a data source to a
view. It creates views for data items and manages the data and views binding. It
provides a bridge between the data source and the UI. It is responsible for creating
the views that represent the data. It also manages the data as it is displayed to the
user. An adapter extends the BaseAdapter or RecyclerView.Adapter class to provide
the necessary functionality.
Adapters in Android are commonly used to populate views such as ListView,
GridView, and RecyclerView. They are also used in other UI components such as
Spinners, AutoCompleteTextView, and SearchView.
27. What do you mean by Android NDK?
The Android NDK (Native Development Kit) is a toolset. It allows developers to build
Android apps using native code languages like C and C++, in addition to Java and
Kotlin, which are the primary languages used for Android development.
The NDK provides a set of headers and libraries. It allows developers to write native
code that can be compiled into shared libraries that can be loaded and used by an
Android application. All these shared libraries can be accessed using Java Native
Interface (JNI), which allows the Java code to call the native code.
The first step consists of the compilation of the resources folder using the Android
Asset Packaging Tool (AAPT). These are compiled into a single class file known as
R.java, which only holds constants.
In the second step, the java source code needs to be compiled to .class files using
javac, which are then converted to Dalvik bytecode using the ‘dx’ tool, which is one of
the tools in the software development kit. The final output file is classes.ex.
In the third and final step, the Android apk builder is required to take all the inputs
and build the Android Packaging Key (APK) file.
The following is a list of the most popular programming languages that can be used
to develop applications for Android:
Java: One of the most popular programming languages, Java has always been a
starting point for new developers and is used by many who work with Android
development.
Kotlin: Kotlin is a relatively new, modern, safe, and object-oriented cross-platform
programming language. When Android Studio 3.0 was released in Oct 2017, Kotlin
was announced as the official programming language for Android. Many popular
applications such as Trello, Square, and Corda have since then shifted to Kotlin.
C#: Using the C# language developers can build native iOS and Android mobile
applications.
Python: Python has emerged as one of the most popular programming languages in
recent times. A dynamic and object-oriented programming language, Python is very
popular in machine learning.
Android Software Development Kit (SDK) and Virtual Device Manager: This tool
is used to generate and handle Android Virtual Devices (AVD) and SDKs. Through
the emulator in the AVD, you can specify the supported SDK version, storage in the
SD card, screen resolution, and other abilities such as GPS and touch screen.
The Android Emulator: The AE is the implementation of the Android Virtual
Machine, designed to run processes within a virtual device itself, which can be used
on a development computer. The main use of this tool is in testing and debugging
Android applications.
Android Debug Bridge (ADB): The ADB is a command-line debugging application
doled out with the SDK. It enables developers to communicate with the device, and
facilitates actions such as the installation and debugging of an application.
Android Asset Packaging Tool (AAPT): The AAPT builds the ‘.apk’ distributable
Android package file.
gen: gen contains the compiler-generated .R file which references all the resources
in the project
src: src holds the .java source files in our project
bin: bin contains the .apk file built by the ADT during the build process, along with all
the other things needed to run an Android application
AndroidManifest.xml: This file is the manifest file that explains the basic features of
the application and defines all its components
res/values: res/values is a directory for other various XML files that contain
resources such as strings, color definitions and more
res/drawable-hdpi: This is a directory for objects that are drawable and designed for
high-density screens
res/layout: It is a directory of files that define the UI for your application
OnPause(): Called when the activity is going to the background but hasn’t been
killed yet
OnStop(): Called when you are no longer visible to the user
OnDestroy(): Called when the activity is finishing
OnRestart(): Called after the activity has been stopped, prior to it being started again
Low investment and better returns: Android development has a low entry barrier
and is suitable for new developers looking to become proficient in the programming
field
Free SDK: One of the most prominent features of Android is that the Software
Development Kit is open source and is provided free of charge, which eradicates the
cost of licensing distribution and development fee
Easy Adoption: Android applications are scripted in Java, which is one of the most
used programming languages in the world
Reusable: Android components can be reused and even replaced by the framework
Multi-Platform Support: The Android platform supports major OSs such as Linux,
Mac OS, and Windows
Support for Wearable Devices: The market is now flooded with wearable devices
and Android has emerged as leading support for such devices that are now readily
available in the market
Fake Applications: There are thousands of fake apps available on the market at any
given time, which when installed may try to steal your data.
Streamlining issues: There are a variety of Android devices available in the market,
with different screen sizes and dimensions, but more importantly, different Android
Operating Systems. Every application developer has to constantly work towards
updating their application for the new OS but with various OS versions and upgrades,
the process is quite difficult. An application that runs smoothly on one version of the
Android OS might crash on a different Android OS.
Background Processes: The abundance of running processes in the background is
always an issue, as they eat up the battery quickly.
Linux Kernel: The Linux Kernel forms the basis of the Android platform, and this
powers features such as memory and power management, and various drivers. It
serves as an abstraction layer before the other layers.
Platform Libraries: Android’s platform libraries are native C and C++ libraries that
provide support for graphics and media, and a WebKit library. This allows developers
to implement graphic functionality and display web content, among other things.
Android Runtime: Android Runtime (ART) and the core libraries are among the
most significant parts of the architecture. It serves as the foundation for the
application framework, and has features like optimized garbage collection.
Android applications: This is what you see when you use your phone, and is the
top level of the architecture. Core apps like email, SMS, and contacts come pre-
installed.
Application Framework: The application framework contains classes that are used
in the creation of an application. They provide the building blocks with which you can
create apps, and provide services such as a resource manager, notification manager,
and activity manager.
Position Sensor: It is used to measure the physical position of the Android device.
This includes orientation sensors and magnetometers
Motion Sensors: These sensors include gravity, rotational activity, and acceleration
sensors which measure the rotation of the device or the acceleration and much more.
Environmental Sensor: It includes sensors that measure temperature, pressure,
humidity, and other environmental factors
18. Name some testing scenarios for real devices, not on emulators.
Emulators are devices that are used to perform tasks comparable to that of real
Android devices, and are used to decrease the cost of testing.
But some scenarios can only be performed on real devices. These scenarios
include:
Messaging
Bluetooth
Mounting and unmounting the memory card
Validation of battery scenarios
Memory related issues
Validation of the performance
separate from the current context or when you are passing a context beyond the
scope of activity.
Free Memory: As there is a limited amount of space on mobile devices, you can try
by freeing up memory space for the application to function properly
Compatibility Check: It may not be a hardware problem, but more of a software
issue. It is not always possible to test an application for all devices and Operating
Systems. There might be a chance that the application is not compatible with your
OS, so check the compatibility on the application’s Google Play Store page.
Memory Management: Some applications run perfectly on one mobile device but
may crash on other devices. This is where processing power, memory management,
and CPU speed come into play. Check the application memory requirements if the
application crashes constantly.
App Data Usage: You can delete the application’s data, which will clear its cache
memory and allow some free space on your device and might boost the app’s
performance
Port forwarding
Location data spoofing
Screen capture
Logcat
Radio state information
Thread and Heap information
The DDMS tool is now deprecated and Android now suggests the users use Android
Profiler instead.
Explicit Intent: An explicit intent is where you inform the system about which activity
or system component it should use to generate a response to this intent.
Implicit Intent: An implicit intent allows you to declare the action you wish to carry
out, after which the Android system will check which components are registered to
handle that specific action.
25. What is the AndroidManifest.xml file and why do you need this?
The AndroidManifest.xml file contains information about the application, which is
then provided to the Android system. This data may include the package name,
components such as activity, services, content providers, and more. This file
executes the following tasks:
Standard: This launch mode generates a new instance of the activity in the task from
which it originated. It is possible to create multiple instances of the same activity,
which can be added to the same or different tasks.
SingleTop: This launch mode is similar to the Standard launch mode, except if there
exists a previous instance of the activity on the top of the stack, then a new instance
will not be created, but the intent will be sent to the existing instance of the activity.
SingleTask: This launch mode will always create a new task and push a new
instance to the task as the root one.
SingleInstance: This launch mode is the same as the SingleTask launch mode but
the system doesn’t launch any new activities in the same task. In a scenario where
the new activity is launched, it is launched in a separate task.
String
List
Map
charSequence
INT, Long, Char, Boolean (Java data types)
30. Name the different data storage options available on the Android
platform.
Android platform provides a variety of data storage options that can be used
depending on the need of the user. The storage options are:
Activities Services
Closed Open
Not designed to run behind the scenes Designed to run behind the scenes