develop apps super fast with android jetpack! divya jain ... · fast with android jetpack! divya...

39
Develop Apps Super fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018

Upload: others

Post on 03-Sep-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Develop Apps Super

fast with Android

Jetpack!

Divya Jain @divyajain2405 Valley Devfest 2018

Page 2: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Put the pieces of the puzzle together...

To create something beautiful , user friendly & serves a purpose

Page 3: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Challenges in Android Dev● Tons of Boilerplate Code

● Clean Architecture

● Testing

● Backward compatibility

Page 4: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Who wants to build robust high

quality production ready apps in an accelerated manner?

Page 5: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data
Page 6: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Android Jetpack!

Page 7: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

What is it?● Collection of individual software components -

libraries and tools● Independently adoptable● Built to work together ● Unbundled from Platform APIs

Page 8: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

FOUNDATION

AppCompat

Android KTX

Mul

tidex Testing

* Core System Components *Kotlin *Backward Compatibility *Testing Libraries

Page 9: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

UI

Layout

Fragment

Palette

Emoji

Animations and Transitions

Auto TV Wear

* Widgets and helpers

*Easy to use

*Enhanced User experience

Page 10: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

ARCHITECTURE

Lifecycles Livedata

Paging

Navigation

WorkManager

Room

Viewmodel

Data Binding

*Clean & Recommended *Data Management *Robust, scalable & Maintainable

Page 11: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

BEHAVIOUR

Notifications

Permissions

Sharing

Slices

Media & Playback

Download Manager

* Integrate with other Android services

*help interact with user

Page 12: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Foundation

UI

Architecture

Behaviour

Easier to Develop

Follow Best Practices

Reduces Boilerplate code

Simplify tasks

Reduces Memory crashes

Lessens memory leaks

Page 13: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Concentrate on the nitty gritty of Android platform

Focus on the Code you actually care about

Page 14: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

AndroidX

New improved Android Support Library with consistent Namespacing , faster updates , feature parity & new libraries

androidx.*androidx.<feature>.ClassName

androidx.<feature>:<feature>-<sub-feature>

Page 15: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Migrate to AndroidXgradle.properties file :

Changes in Package and Maven Artifact names

https://developer.android.com/jetpack/androidx/migrate

Page 16: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

FOUNDATION

AppCompat

Android KTX

Mul

tidex Testing

* Core System Components *Kotlin *Backward Compatibility *Testing Libraries

Page 17: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Android KTX

Kotlin

Extension Function

Null Safety

Default & named arguments

Higher order functions

Smart Cast

Leverages Kotlin Features

Optimizes Android APIs with Kotlin

Makes Android Development - concise - enjoyable - intuitive

Page 18: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Android KTXParse a string to a URI

val uri = Uri.parse(custom_string)

Val uri = custom_string.toUri()

import android.view.Menuimport androidx.core.view.getimport androidx.core.view.minusAssign

fun myFunction(menu : Menu) { val firstMenuItem = menu[0] //Gets the first menu item. menu -= firstMenuItem // Removes the menu item

}

Menu Class

● Core KTX● Fragment KTX● Palette KTX● Collections KTX● SQLite KTX● Navigation KTX

Build.gradle

implementation "androidx.core:core-ktx:$androidx_version"

Page 19: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

UI

Layout

Fragment

Palette

Emoji

Animations and Transitions

Auto TV Wear

* Widgets and helpers

*Easy to use

*Enhanced User experience

Page 20: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Layout

ViewGroup

View ViewViewGroup

View View

<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/root_view" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/margin">

Page 21: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Fragment

● Dynamic and Flexible UI Designs

● Support different screens

● Reusable UI components

1.

implementation 'androidx.fragment:fragment-ktx:$currentVersion'

supportFragmentManager.transaction(now = false, allowStateLoss = false) {

replace(R.id.frag_container, myFragment,FRAGMENT_TAG) }

Page 22: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Palette API

1.

● Vibrant color

schemes

● Visually appealing

● Pick and choose

● Various layout

themes

fun createPaletteSync(bitmap: Bitmap):

Palette = Palette.from(bitmap).generate()

fun createPaletteAsync(bitmap: Bitmap) { Palette.from(bitmap).generate { palette

-> // Use generated instance }}

Page 23: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Emoji Compat

1.

● Device up to date with Latest

● No need to wait for OS updates 😄 ● Prevents showing missing ✋● Identifies emoji for a given CharSequence,

replaces them with EmojiSpan & renders ✅

Page 24: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Animations

1.

Visual Cue to notify users of changes!

● Informative

● Focus

● Expressive

Page 25: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

ARCHITECTURE

Lifecycles Livedata

Paging

Navigation

WorkManager

Room

Viewmodel

Data Binding

*Clean & Recommended *Data Management *Robust, scalable & Maintainable

Page 26: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Architecture Components

● Separation of concerns

● Drive UI from model

● Persistence of data

● Independent testing

Page 27: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Paging

➔ Lazy Loading of Data

➔ Economical use of system resources

➔ Responsive to the user input without a lag

DataSource

DataSource Factory

ViewModelPagedList PagedList Adapter

Page 28: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Navigation Cool way to storyboard the app destinations!

Page 29: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Navigation

❖ Actions

❖ Animations

❖ Up/Back Behavior

❖ Passing Arguments

❖ Deep Links

Page 30: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

WorkManager

Job Scheduler

Alarm Manager

Firebase JobDispatcher

Asynchronous Task

Constraints

Work Request

enqueues

Page 31: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Data Binding

Bind UI elements to the data sources programmatically

UI Framework methods

findViewById()

Bind UI elements to the data sources in a declarative format

Remove UI Framework methods

<TextView android:text="@{viewmodel.userName}" />

Page 32: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

BEHAVIOUR

Notifications

Permissions

Sharing

Slices

Media & Playback

Download Manager

* Integrate with other Android services

*help interact with user

Page 33: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Want to download something?

Download Manager

● System service● Handles HTTP Downloads● Background● Handles interactions● Takes care of retrying

Want to share something?

ShareActionProvider

● Menu item● Handles appearance & behaviour● Needs a share intent

Page 34: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Want to Notify user?

NotificationCompat

● Info to user outside App● Informative/action oriented● Timely reminders● Frequent interruptions are

annoying

Permissions

<uses-permission>

● Privacy of user● Permission to access sensitive

user data● Dangerous permission on

demand

Page 35: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Slices

Embed App content in Google Search through flexible templates

TemplatedShow relevant app content in a dynamic, app theme user interface

InteractiveEnable user to perform inline, app actions, deep link, update, toggle

Modular

Page 36: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Valley Devfest 2018 App

Data---------------------------------------------

------------

User Interface

RepositoryModel View ViewModel

Livedata

Room

Fragments

Animations

LayoutsNavigation

Caching

NotificationsShareActionProvider

Page 37: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Android Jetpack has all the pieces needed for putting together the app

Choose and pick the ones you need, integrate

App is Ready in no time!

Page 38: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

https://developer.android.com/jetpack/

Page 39: Develop Apps Super fast with Android Jetpack! Divya Jain ... · fast with Android Jetpack! Divya Jain @divyajain2405 Valley Devfest 2018. Put the pieces ... *Clean & Recommended *Data

Thank you!

Questions Please?Divya Jain @divyajain2405