Skip to main content


Android O New Features Overview

This post assumes, you are an experienced developer who wants to get started with the latest version of Android.

Android O is not a huge update to the OS and application framework like M but it still has many useful features for both developer and an user.

Android O has focus on below areas.
Notification redesignedPicture-in-Picture(PIP)  Visual adaption for different devices  Battery life improved Setting app reorganizedNotification redesigned:
Android O notification changes includes more easy and manageable way to manager your notification behavior and settings. It includes:
Notification Channel: Notification channel allows you to create user customizable channel for each type of notification you wanna display. A single application can have multiple channel, a separate channel for each type of notification you wanna display. Having said this, you can create s separate channel for audio & image notification. User can disable specific notification channel instead of disabling all no…
Recent posts

Java 8 Overview

Java 1.8 has introduced major features for the Java developers. It includes various upgrade to the Java programming, JVM, Tools and libraries. The main purpose of Java 1.8 release has been to simplify programming, utilize functional programming benefits and enable parallel programming/processing in Java programming language.

Java 1.8 feature Lambda(->) ExpressionFunctional interfacesDefault Methods in interfacestatic method inside interface
    Pre defined functional interfacesPredicateFunction Consumer::(Method reference and constructor reference by using double colon(::)operator)Stream APIDate & Time API

Custom Volley-Gson request implementation

This page covers Volley-Gson integration and also Volley custom Request. We assume that, you are familiar with Volley and Gson.

Volley has some inbuilt request which you can use, if your response is a String, Image, or JSON, in that case, you don't need to implement a custom Request.  To use Gson with Volley, we need to implement a custom request.
To make a custom request, you need to perform following operation.
Extend Request<T> class, where T is the type of parsed response or expected response. Implement the abstract methods parseNetworkResponse() and deliverResponse().  parseNetworkResponse:  A response contains parse response of a given type i.e Gson.

    protected Response<T> parseNetworkResponse(NetworkResponse response) {
        try {
            String json = new String(
          , HttpHeaderParser.parseCharset(response.headers));
            if (BuildConfig.IS_DEBUG)
                Log.d(TAG, "Response :: " + …

Android Native CPU ABI

Every piece of native code generated with the Android NDK matches a given ABI(Application Binary Interface). ABI defines exactly how machine code is expected to interact with the system at runtime. ABI describes following things at runtime: the CPU instruction set that the machine code should use the endianness of memory stores and loads at runtime the format of executable binaries (shared libraries, programs, etc...) and what type of content is allowed/supported in them. various conventions used to pass data between your code and the system (e.g. how registers and/or the stack are used when functions are called, alignment constraints, etc...) alignment and size constraints for enum types, structure fields and arrays. the list of function symbols available to your machine code at runtime, generally from a very specific selected set of libraries. Android Supported ABIs:
1.armeabi: This ABI is for ARM-based CPUs that support atleast the ARMv5TE instruction set.It is the ARM Arch…

Overview of how to develop native code with Android NDK:

Create a jni directory and place native source code under $PROJECT/jni/... Create directory and place it under $PROJECT/jni/... to describe source code to the NDK build system. Create and place it under $PROJECT/jni/ describe project in more details to the NDK build system.It is an optional. Finally need to build native source code by running '$NDK/ndk-build' from project directory or it's sub-directory. An file is a small build script that we write to describe sources to the NDK build system. It's syntax is like this...
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=hello-jni LOCAL_SRC_FILES:=hello-jni.c
NDK groups your sources into "modules", where each module can be one of the following: Static library Shared library We can write several module in a single '' or can write several '' for each module.

NDK(Native Development Kit)

NDK is a set of tools that allows Android application developers to embed native machine code compiled c/c++ source file into their application packages.
Note- Android NDK can only be used to target Android system images running cupcake(1.5) or later versions of the platform.
Android NDK Goals: The DVM allows application's source code to call methods implemented in native code through the JNI. This means that:
Applications source code will be declare one or more methods with the 'native' keyword to indicate that they are implemented through native code. native byte[] loadFile(String filepath); Must have a native shared library that contains the implementation of these methods, which will be packed into application's .apk. Application must explicitly load the library. Static{ System.loadLibrary(FileLoader); } Don't use 'lib'prefix and '.so' suffix. Android NDK is a compliment to the Android SDK that helps to: Generate JNI-compatible …

Android Interview Topics