SlideShare a Scribd company logo
Android Development War 
Stories 
by Lope Emano 
April-September 2014
Seriously though.
The Format 
Share and discuss experiences in an app 
you’ve built and/or the new things you’ve 
learned the past few months.
Things I’ve learned the past few months
New Design-First process is kewl 
First two weeks: 
❖ Researched existing similar apps 
(advantages and disadvantages) 
❖ Watched Android Design In Action videos 
❖ Sketched designs/layouts using pencil and 
paper via printed out stencil kit
Currently in my wishlist, waiting for 
Material version
New Design-First process is kewl 
❖ Demo app to product owner in front of 
photoshop for insta changes 
❖ Acquaint designer with terms like "actionbar, 
navigation bar, status bar, overflow" for easy 
communication 
❖ Android asset studio 
❖ Look around for potential tools 
❖ Sketch (mac app w/ android plugin) seems to 
be gaining traction and is considered as a 
better alternative to PS.
IDE
Android Studio 
❖ Used it and haven’t looked back since 
❖ IntelliJ is still supporting its android plugin 
❖ Gradle + gradle integration is relatively faster 
than Maven 
❖ You can port eclipse shortcuts to Android 
Studio, it’s a built in config.
Libraries
Guava 
- Light and useful 
- Used only MultiMap and StringUtils 
- Still have a lot to learn!
No need for ActionBarSherlock 
- Android support library can now suffice
Butterknife 
❖ Very light weight 
❖ @InjectView, @OnClick, @OnItemClick, 
@InjectView within ViewHolder 
❖ You can inject your ViewHolder 
❖ A Jake Wharton project
Ormlite 
❖ ORM for SQLite w/ android support 
❖ annotations for field -> property mapping 
❖ powerful Dao 
❖ learned about extending BaseDao 
❖ still figuring out how connections get 
closed
GreenDao 
❖ ORM designed to be fast and lightweight 
❖ way faster than ORMLite 
❖ Asynchronous API
FTS/Full Text Search on SQLite 
❖ Found out FTS is supported on SQLite 
❖ Not supported on ORMLite so used 
SQLCursor 
❖ Limited to prefix search: 
“a” will return [“apple”, “anderson”] 
“pple” will return [ ]
EventBus 
“Eventbus is one of the most badass things 
that has happened to me as an android 
developer” 
-Lope Emano
When I saw those two slides, I didn’t 
really realize what it implied.
Why EventBus is a lifesaver 
❖ No need to pass ids between activities via 
intent bundles 
❖ Passing objects from activities to 
fragments is much easier 
❖ Said my goodbye to parcelables 
❖ Communication from background thread to 
main thread is easier
Why EventBus can be dangerous 
Prone to memory leaks 
EventBus stores a listmap of subscribers of 
different types of events. If you forget to 
unregistered a registered object then eventbus will 
hold that object forever 
Very Addictive 
EventBus even when you don’t need it and thus 
ending up with an app with so many events
Check it out! 
http://www.slideshare.net/greenrobot/eventbus-for-android-15314813
My hardest battle
❖ I needed to upload some images to a 
server in a background thread. 
❖ I needed to move around the app without 
the upload getting cancelled.
AsyncTask 
❖ Worked well but when I left the activity the 
I/O stream for reading the image would 
get closed.
Volley 
❖ Popular due to I/O presentation 
❖ Found a hard time to find the source code 
and jar files plus I found something more 
mature and well documented 
❖ I think google is planning on integrating 
this with SDK 
❖ Mirrors available
RoboSpice 
❖ Launched a service to do long running 
background processes 
❖ Was relatively easy to set up. 
❖ There was a learning curve but it wasn't 
that steep.
RoboSpice got me to where I wanted but 
then I realized I wanted something more- an 
offline mode for the app.
Android Priority JobQueue
Android Priority Jobqueue (Job Manager) 
❖ Path project written mostly by yigit 
❖ Supported Offline Mode 
❖ Supported Network State Listeners 
❖ Supported Job Priority 
❖ Supported Job Sequencing 
❖ Supported Dependency Injection (was 
able to integrate it easily with dagger)
Comprehensive sample available! 
https://github.com/path/android-priority-jobqueue/ 
tree/master/examples/twitter
Thanks!

More Related Content

What's hot

Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
Devin Abbott
 
Experiences building apps with React Native @UtrechtJS May 2016
Experiences building apps with React Native @UtrechtJS May 2016Experiences building apps with React Native @UtrechtJS May 2016
Experiences building apps with React Native @UtrechtJS May 2016
Adrian Philipp
 
Esug java
Esug javaEsug java
Esug java
ESUG
 
Ionic framework one day training
Ionic framework one day trainingIonic framework one day training
Ionic framework one day training
Troy Miles
 
SONY BBS - React Native
SONY BBS - React NativeSONY BBS - React Native
SONY BBS - React Native
Mehmet Ali Bağcı
 
Workshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkWorkshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic Framework
Aayush Shrestha
 
Let’s be productive with spring boot
Let’s be productive with spring bootLet’s be productive with spring boot
Let’s be productive with spring boot
JUGBD
 
Hybrid Apps with Ionic Framework
Hybrid Apps with Ionic FrameworkHybrid Apps with Ionic Framework
Hybrid Apps with Ionic Framework
Bramus Van Damme
 
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
David Wesst
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)
Devin Abbott
 
An Introduction to ReactNative
An Introduction to ReactNativeAn Introduction to ReactNative
An Introduction to ReactNative
Michał Taberski
 
Ember Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with EmberEmber Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with Ember
Alex Blom
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-up
Troy Miles
 
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SKJavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
David Wesst
 
Creating an hybrid app in minutes with Ionic Framework
Creating an hybrid app in minutes with Ionic FrameworkCreating an hybrid app in minutes with Ionic Framework
Creating an hybrid app in minutes with Ionic Framework
Julien Renaux
 
JavaScript All The Things
JavaScript All The ThingsJavaScript All The Things
JavaScript All The Things
Jordan Yaker
 
Developing advanced universal apps using html & js
Developing advanced universal apps using html & jsDeveloping advanced universal apps using html & js
Developing advanced universal apps using html & js
Senthamil Selvan
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScriptKevin Whinnery
 
React native-meetup-talk
React native-meetup-talkReact native-meetup-talk
React native-meetup-talk
kiranabburi
 
Ionic Framework
Ionic FrameworkIonic Framework
Ionic Framework
Dylan Swartz
 

What's hot (20)

Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
 
Experiences building apps with React Native @UtrechtJS May 2016
Experiences building apps with React Native @UtrechtJS May 2016Experiences building apps with React Native @UtrechtJS May 2016
Experiences building apps with React Native @UtrechtJS May 2016
 
Esug java
Esug javaEsug java
Esug java
 
Ionic framework one day training
Ionic framework one day trainingIonic framework one day training
Ionic framework one day training
 
SONY BBS - React Native
SONY BBS - React NativeSONY BBS - React Native
SONY BBS - React Native
 
Workshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkWorkshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic Framework
 
Let’s be productive with spring boot
Let’s be productive with spring bootLet’s be productive with spring boot
Let’s be productive with spring boot
 
Hybrid Apps with Ionic Framework
Hybrid Apps with Ionic FrameworkHybrid Apps with Ionic Framework
Hybrid Apps with Ionic Framework
 
Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)Learning to be IDE Free (PrDC 2015)
Learning to be IDE Free (PrDC 2015)
 
Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)Getting Started with React Native (and should I use it at all?)
Getting Started with React Native (and should I use it at all?)
 
An Introduction to ReactNative
An Introduction to ReactNativeAn Introduction to ReactNative
An Introduction to ReactNative
 
Ember Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with EmberEmber Conf 2016: Building Mobile Apps with Ember
Ember Conf 2016: Building Mobile Apps with Ember
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-up
 
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SKJavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
 
Creating an hybrid app in minutes with Ionic Framework
Creating an hybrid app in minutes with Ionic FrameworkCreating an hybrid app in minutes with Ionic Framework
Creating an hybrid app in minutes with Ionic Framework
 
JavaScript All The Things
JavaScript All The ThingsJavaScript All The Things
JavaScript All The Things
 
Developing advanced universal apps using html & js
Developing advanced universal apps using html & jsDeveloping advanced universal apps using html & js
Developing advanced universal apps using html & js
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
 
React native-meetup-talk
React native-meetup-talkReact native-meetup-talk
React native-meetup-talk
 
Ionic Framework
Ionic FrameworkIonic Framework
Ionic Framework
 

Similar to Android development war stories

[Mas 500] Mobile Basics
[Mas 500] Mobile Basics[Mas 500] Mobile Basics
[Mas 500] Mobile Basicsrahulbot
 
Vn-info meetup on Node.js
Vn-info meetup on Node.jsVn-info meetup on Node.js
Vn-info meetup on Node.js
Son Nguyen Kim
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
sparkfabrik
 
The FT Web App: Coding Responsively
The FT Web App: Coding ResponsivelyThe FT Web App: Coding Responsively
The FT Web App: Coding Responsively
C4Media
 
Copass + Ruby on Rails = <3 - From Simplicity to Complexity
Copass + Ruby on Rails = <3 - From Simplicity to ComplexityCopass + Ruby on Rails = <3 - From Simplicity to Complexity
Copass + Ruby on Rails = <3 - From Simplicity to Complexity
Augustin Riedinger
 
GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)
pgt technology scouting GmbH
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
joeysim
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
Introduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleIntroduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning Simple
Sandeep Hijam
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
Chad Udell
 
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Marie Smith
 
Visual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solutionVisual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solution
Lisa Backer
 
Introduction to Cross-Platform Hybrid Mobile App Development
Introduction to Cross-Platform Hybrid Mobile App DevelopmentIntroduction to Cross-Platform Hybrid Mobile App Development
Introduction to Cross-Platform Hybrid Mobile App Development
Özcan Zafer AYAN
 
Prototyping for mobile
Prototyping for mobilePrototyping for mobile
Prototyping for mobile
Memi Beltrame
 
Q6 Evaluation Media
Q6 Evaluation MediaQ6 Evaluation Media
Q6 Evaluation Mediagryall97
 
Build your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App EngineBuild your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App Engine
Jl_Ugia
 
Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)
danielputerman
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Michael Lihs
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-design
Kevin Conboy
 

Similar to Android development war stories (20)

[Mas 500] Mobile Basics
[Mas 500] Mobile Basics[Mas 500] Mobile Basics
[Mas 500] Mobile Basics
 
Vn-info meetup on Node.js
Vn-info meetup on Node.jsVn-info meetup on Node.js
Vn-info meetup on Node.js
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
The FT Web App: Coding Responsively
The FT Web App: Coding ResponsivelyThe FT Web App: Coding Responsively
The FT Web App: Coding Responsively
 
Copass + Ruby on Rails = <3 - From Simplicity to Complexity
Copass + Ruby on Rails = <3 - From Simplicity to ComplexityCopass + Ruby on Rails = <3 - From Simplicity to Complexity
Copass + Ruby on Rails = <3 - From Simplicity to Complexity
 
GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
 
Introduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleIntroduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning Simple
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
Google Developers Group Cloud Los Angeles, Progressive Web Applications by Ta...
 
Visual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solutionVisual Regression Testing: In search of an Ember solution
Visual Regression Testing: In search of an Ember solution
 
Introduction to Cross-Platform Hybrid Mobile App Development
Introduction to Cross-Platform Hybrid Mobile App DevelopmentIntroduction to Cross-Platform Hybrid Mobile App Development
Introduction to Cross-Platform Hybrid Mobile App Development
 
Prototyping for mobile
Prototyping for mobilePrototyping for mobile
Prototyping for mobile
 
Q6 Evaluation Media
Q6 Evaluation MediaQ6 Evaluation Media
Q6 Evaluation Media
 
Build your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App EngineBuild your cross-platform service in a week with App Engine
Build your cross-platform service in a week with App Engine
 
Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)Appium overview (Selenium Israel #2, Feb. 2014)
Appium overview (Selenium Israel #2, Feb. 2014)
 
Portfolio
PortfolioPortfolio
Portfolio
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-design
 

More from Lope Emano

Android development - ListView & Adapter
Android development - ListView & AdapterAndroid development - ListView & Adapter
Android development - ListView & Adapter
Lope Emano
 
Android Development - Process & Tools
Android Development - Process & ToolsAndroid Development - Process & Tools
Android Development - Process & Tools
Lope Emano
 
Android development - Activities, Views & Intents
Android development - Activities, Views & IntentsAndroid development - Activities, Views & Intents
Android development - Activities, Views & Intents
Lope Emano
 
Android development - Network Requests
Android development - Network RequestsAndroid development - Network Requests
Android development - Network Requests
Lope Emano
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
Lope Emano
 
Android History & Importance
Android History & ImportanceAndroid History & Importance
Android History & Importance
Lope Emano
 
Dependency Injection in Android with Dagger
Dependency Injection in Android with DaggerDependency Injection in Android with Dagger
Dependency Injection in Android with DaggerLope Emano
 
Android development
Android developmentAndroid development
Android developmentLope Emano
 

More from Lope Emano (8)

Android development - ListView & Adapter
Android development - ListView & AdapterAndroid development - ListView & Adapter
Android development - ListView & Adapter
 
Android Development - Process & Tools
Android Development - Process & ToolsAndroid Development - Process & Tools
Android Development - Process & Tools
 
Android development - Activities, Views & Intents
Android development - Activities, Views & IntentsAndroid development - Activities, Views & Intents
Android development - Activities, Views & Intents
 
Android development - Network Requests
Android development - Network RequestsAndroid development - Network Requests
Android development - Network Requests
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
Android History & Importance
Android History & ImportanceAndroid History & Importance
Android History & Importance
 
Dependency Injection in Android with Dagger
Dependency Injection in Android with DaggerDependency Injection in Android with Dagger
Dependency Injection in Android with Dagger
 
Android development
Android developmentAndroid development
Android development
 

Recently uploaded

Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 

Recently uploaded (20)

Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 

Android development war stories

  • 1. Android Development War Stories by Lope Emano April-September 2014
  • 2.
  • 3.
  • 5. The Format Share and discuss experiences in an app you’ve built and/or the new things you’ve learned the past few months.
  • 6. Things I’ve learned the past few months
  • 7. New Design-First process is kewl First two weeks: ❖ Researched existing similar apps (advantages and disadvantages) ❖ Watched Android Design In Action videos ❖ Sketched designs/layouts using pencil and paper via printed out stencil kit
  • 8.
  • 9. Currently in my wishlist, waiting for Material version
  • 10. New Design-First process is kewl ❖ Demo app to product owner in front of photoshop for insta changes ❖ Acquaint designer with terms like "actionbar, navigation bar, status bar, overflow" for easy communication ❖ Android asset studio ❖ Look around for potential tools ❖ Sketch (mac app w/ android plugin) seems to be gaining traction and is considered as a better alternative to PS.
  • 11. IDE
  • 12. Android Studio ❖ Used it and haven’t looked back since ❖ IntelliJ is still supporting its android plugin ❖ Gradle + gradle integration is relatively faster than Maven ❖ You can port eclipse shortcuts to Android Studio, it’s a built in config.
  • 14. Guava - Light and useful - Used only MultiMap and StringUtils - Still have a lot to learn!
  • 15. No need for ActionBarSherlock - Android support library can now suffice
  • 16. Butterknife ❖ Very light weight ❖ @InjectView, @OnClick, @OnItemClick, @InjectView within ViewHolder ❖ You can inject your ViewHolder ❖ A Jake Wharton project
  • 17. Ormlite ❖ ORM for SQLite w/ android support ❖ annotations for field -> property mapping ❖ powerful Dao ❖ learned about extending BaseDao ❖ still figuring out how connections get closed
  • 18. GreenDao ❖ ORM designed to be fast and lightweight ❖ way faster than ORMLite ❖ Asynchronous API
  • 19. FTS/Full Text Search on SQLite ❖ Found out FTS is supported on SQLite ❖ Not supported on ORMLite so used SQLCursor ❖ Limited to prefix search: “a” will return [“apple”, “anderson”] “pple” will return [ ]
  • 20. EventBus “Eventbus is one of the most badass things that has happened to me as an android developer” -Lope Emano
  • 21.
  • 22.
  • 23. When I saw those two slides, I didn’t really realize what it implied.
  • 24. Why EventBus is a lifesaver ❖ No need to pass ids between activities via intent bundles ❖ Passing objects from activities to fragments is much easier ❖ Said my goodbye to parcelables ❖ Communication from background thread to main thread is easier
  • 25. Why EventBus can be dangerous Prone to memory leaks EventBus stores a listmap of subscribers of different types of events. If you forget to unregistered a registered object then eventbus will hold that object forever Very Addictive EventBus even when you don’t need it and thus ending up with an app with so many events
  • 26. Check it out! http://www.slideshare.net/greenrobot/eventbus-for-android-15314813
  • 28. ❖ I needed to upload some images to a server in a background thread. ❖ I needed to move around the app without the upload getting cancelled.
  • 29. AsyncTask ❖ Worked well but when I left the activity the I/O stream for reading the image would get closed.
  • 30. Volley ❖ Popular due to I/O presentation ❖ Found a hard time to find the source code and jar files plus I found something more mature and well documented ❖ I think google is planning on integrating this with SDK ❖ Mirrors available
  • 31. RoboSpice ❖ Launched a service to do long running background processes ❖ Was relatively easy to set up. ❖ There was a learning curve but it wasn't that steep.
  • 32. RoboSpice got me to where I wanted but then I realized I wanted something more- an offline mode for the app.
  • 34. Android Priority Jobqueue (Job Manager) ❖ Path project written mostly by yigit ❖ Supported Offline Mode ❖ Supported Network State Listeners ❖ Supported Job Priority ❖ Supported Job Sequencing ❖ Supported Dependency Injection (was able to integrate it easily with dagger)
  • 35. Comprehensive sample available! https://github.com/path/android-priority-jobqueue/ tree/master/examples/twitter