Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
An introduction to Android development
Search
Eugene Oskin
January 20, 2018
Programming
0
65
An introduction to Android development
Eugene Oskin
January 20, 2018
Tweet
Share
More Decks by Eugene Oskin
See All by Eugene Oskin
REST API. Django, Ruby on Rails, Play! Framework
evgeneoskin
0
71
Introduction to gRPC
evgeneoskin
0
60
GrailInventory – Advanced Backend Development
evgeneoskin
0
32
Bracing Calculator
evgeneoskin
1
63
emotional intelligence, part 2
evgeneoskin
0
34
Office temperature
evgeneoskin
0
31
Parse platform
evgeneoskin
0
96
Hubot
evgeneoskin
0
47
An introduction to iOS development
evgeneoskin
0
37
Other Decks in Programming
See All in Programming
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
160
Elm Form Validation
bkuhlmann
0
520
スキーマ駆動開発による品質とスピードの両立 - 私達は何故、スキーマを書くのか
kentaroutakeda
0
180
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
1.1k
Try creating your own orderedmap
kazamori
1
240
Documentation for users with AsciiDoc and Antora
ahus1
0
370
Git Rebase
bkuhlmann
11
1.6k
Ruby Function Composition
bkuhlmann
1
340
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
2
210
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
520
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
130
Goのmultiple errorsについて (2024年4月版)
syumai
4
1.2k
Featured
See All Featured
How GitHub Uses GitHub to Build GitHub
holman
468
290k
The Art of Programming - Codeland 2020
erikaheidi
43
12k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Into the Great Unknown - MozCon
thekraken
15
1k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Ruby is Unlike a Banana
tanoku
96
10k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
The Illustrated Children's Guide to Kubernetes
chrisshort
32
46k
What's in a price? How to price your products and services
michaelherold
238
11k
Embracing the Ebb and Flow
colly
80
4.2k
Building Your Own Lightsaber
phodgson
100
5.7k
Infographics Made Easy
chrislema
238
18k
Transcript
An introduction to Android development
Why I do this?
Deep dive into Android
• Activity • Fragments • Views • *Listener Vocabulary •
Adapters • DAO • Providers • Service
ToolKit
None
App Architecture • MVC: ◦ Activity, Fragments ◦ DAO, Providers
◦ Adapters, Views
App Architecture • MVC: ◦ Activity, Fragments ◦ DAO, Providers
◦ Adapters, Views • Cursor • Service
Pitfalls
Pitfalls • Emulator • findViewById hell • Huge Activity •
Android specific SDK
• Use Real device • Speed up your emulator (Intel
HAXM) • Use an alternative Emulator
findViewById hell • Use Kotlin Android Extensions • Use Dependency
Injection like butterknife or dagger
Huge Activity • Decompose it! • Use RxJava/RxAndroid • Use
Kotlin
RxJava/RxKotlin/RxAndroid getObservable() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe { s -> data.add(s) adapter.notifyDataSetChanged()
}
RxJava/RxAndroid • Why? ◦ Use high level API to run
asynchronous code. • How? ◦ Add custom observers and use Rx operators • When? ◦ Until it's too late. But not too soon.
Android specific SDK • Keep Calm and work with it
• Use Guava • Use Kotlin
Advices • Make it simple – Android is not a
Java EE! • Use linters and tests – Automate! • Later use Platform Architecture Components
Platform Architecture Components • LifeCycle – Handling Lifecycles with Lifecycle-Aware
Components • Room – ORM • LiveData – like Rx • Paging – to build paged lists with Room
Summary
None
References • Butterknife • Dagger • Guava • Platform Architecture
Components • RxAndroid