No internet!! Let your apps still work

Post on 19-Feb-2017

78 views 0 download

Transcript of No internet!! Let your apps still work

Nointernet!!Letyourappsstillwork

SANGHARSHBOUDHH

CO-FOUNDER@PAPERTOSTONE

– Photosharingb/wfriends

Whatdoesitmean?Connectivity isnotguaranteed

Wehaveallseenmanyappswhichworksseamlesslywithout internet

Source:http://www.techgainer.com/whatsapp-message-sent-delivered-and-read-status-identification/

Andmanymore…

HelloAndroid!!

Source:http://www.wired.com/2011/12/only-android-compatible/

ExperiencewithAndroid

Feelfreetointerrupt

Basics- OverviewEventdrivenprogramming

Activity

Intent&Intentfilters

Manifestfile

Service

Contentproviders

Broadcastreceivers

Layouts

Event-drivenprogrammingStartajavaprogram◦ main function runs

Android◦ Userclickedonbutton◦ Screenstarting◦ GPSLocationchanged◦ Anotherappissharing image

ActivityProvidesascreen

Hooksfor◦ Hey,screenisstarting whatdoyouwanttodo◦ Hey,screenisstoppingwhatdoyouwanttodo◦ Hey,screenisbecomingvisible/invisiblewhatdoyouwanttodo

Source:http://www.edureka.co/blog/android-tutorials-for-beginners-activity-component/

Intent&IntentFiltersIntent◦ Implicit◦ Shareajoke(text)◦ Openmapslink

◦ https://www.google.co.in/maps/place/Kozhikode,+Kerala

◦ Explicit◦ Openanotherscreen(activity)inmyapp

IntentFilter◦ Capabletoshareimages◦ Capabletoopenlinkstomydomain Source:http://slidenerd.com/2014/10/31/android-intents-explicit-and-implicit-intents/

ManifestfileWaytotellrequirement&capabilitiesofyourapp◦ Activities◦ Services,Receivers◦ Permissions◦ Wanttoknowpreciselocationofuser

◦ Feature◦ Deviceshould havecamera

ServiceLongrunningoperation

Inbackground◦ Noscreen

Operationstillneedstorunindifferentthread

ContentProviderCoveredlaterinpresentation

BroadcastReceiversTrigger◦ Letmeknow,whendeviceisputoncharging◦ Letmeknow,whenSMSisreceived

Performsomelogic◦ Startanactivity◦ Senddatatoserver

Layouts

ThreadsOnemainexecutionthread◦ Should notbeblocked◦ UImanipulation canhappenonlyhere

Longrunningoperations◦ Doneondifferent thread

AndroidEssentialsCrashreporting◦ ACRA,Crashlytics,Crittercism

Analytics◦ GoogleAnalytics,Flurry,Mixpanel

JSON(de-)serialization◦ Gson

HTTPlibrary◦ Retrofit,Volley,Loopj

Pushnotifications◦ GCM◦ Parse,CleverTap,Moengage,Qgraph

Imagehandling◦ Picasso

InstallTracking◦ TUNE, AppsFlyer

DataStorageKey-Valuepairs◦ SharedPreferences◦ “organization”:”Cafit”;“conference”:“Reboot”

◦ Singlevalueitemse.g.userpreferences

Files

Relationaldata◦ Outofthebox:SQLite◦ Multiple rowsofdata◦ Normalizeddataform

ConnectingtoyourserverBasics◦ AsyncTask◦ HttpURLConnection

Libraries◦ Retrofit bySquare◦ Volley◦ Loopj

SyncFrameworkProvides◦ Robustframeworkoutofthebox◦ Automatednetworkchecking◦ Improvedbatteryperformance◦ Scheduling, Retries

Implementation◦ Authenticator◦ ContentProvider◦ SyncAdapter

Resource◦ TransferringDataUsingSyncAdapters◦ Howtodevelopanoffline-firstnativeAndroid app

AuthenticatorRegistersuserinAndroidSystem(Settings>Accounts)

Stubitorimplementit◦ Dependsonlogin requirementofyourserver-side

ExtendsAbstractAccountAuthenticator

Register◦ Metadatafile

Source:◦ AbstractAccountAuthenticator◦ Stub Authenticator

BonusAppsshowsupinSettings>Accounts

ContentProviderWhat◦ Sharingdatawithotherapps◦ Accessingdataofotherapps◦ E.g.Contacts,Calendar

◦ Morestructuredwaytoaccessowndata

Resources◦ ContentProvider◦ Stubprovider◦ Simpleprovider – Greatlibrarytostart

Advancedcases◦ Joining tables◦ Visibilityhandling

SyncAdapterExtendAbstractThreadedSyncAdapter

Boundservice

SyncAdapter- RegisterMetadatafile

AndroidManifest

SyncAdapter–WhentorunWhenserverdatachanges◦ GCM

◦ ContentResolver.requestSync()

Whendevicedatachanges◦ ContentProviderdetectschange

◦ ContentObserver.onChange()

Periodically◦ Atregularintervals◦ Specifictimesofday

◦ ContentResolver.addPeriodicSync()

Ondemand◦ Inresponsetouser’saction

◦ ContentResolver.requestSync()

AdditionalbenefitsLoaders◦ Asynchronous loadingofdata◦ Autorefreshoncontentchange◦ Plugs inwellwithContentProvider andCursors◦ https://developer.android.com/guide/components/loaders.html

Sharingdataacrossapps

Systemchecksconnectivityforyou

ThankyouJWouldlovetochataboutAndroid,Node.js,Angular.js,Elasticsearch,Startupsoranythingafterthetalk

- SangharshBoudhh

sangharsh@papertostone.com

www.papertostone.com

https://www.linkedin.com/in/sangharshboudhh