SlideShare a Scribd company logo
1 of 35
CWC Grooming Session: Android
Outline
Problem Set for CWC
Judgment Criteria
Pragmatic Practices in Android Development
  Some Dos and Don’ts
UX Design Fundamentals
  Designing for Performance
  Designing for Responsiveness
  Supporting Multiple Screens
  Location Based Services
UI Design Patterns
Testing
Problem Set
A courier service company wants to give its delivery employees ability to
perform deliveries easily and enable them to do on site reporting
quickly. In order to solve this problem, they want to have an Android
application which will be delivered to designated employees.

The key features of the app would be to

1.   See the tasks assigned to an employee
2.   See the delivery locations on Maps
3.   View task details of a delivery item with associated location
     information and recipient phone number.
4.   After a successful delivery the details are emailed or synchronized
     with server and task lists are auto updated based on that.
5.   Ability to do any reporting from on site.
6.   Tracking the performance of an application user through graphical
     charts or aided system.
Problem Set
Required Features of Android (For your preparation)
 1. Location Based Service
 2. Consuming Web Services
 3. Integrating Maps Library
 4. Using SQLite Database
 5. Unit Testing
 6. Black-Box Testing
Battle: Round 1
1. A codebase and bare bone project along with
   requirement specification will be provided to each
   group over online repository on 20th January
2. You have to implement the unimplemented features
   of the specification
3. You will also have to improve the given source code
4. During round 1 of the battle you’ll be given 3-4
   assignments on your project
5. Your deliverables of round 1 of the battle will be
   judged with the following criteria
Judgment Criteria
1.   User Experience Design
2.   Efficient handling of multiple screen sizes
3.   Power efficient design
4.   Database design
5.   Unit Testing
6.   Black-Box Testing
7.   Quick integration with open source components
8.   Application of Object oriented principles and design
     patterns
Pragmatic Practices: Some Dos and Don’ts
Some DON’Ts (1)

                                  SLOTH
                         Be Fast, Be Responsive



                Golden Rules

  Don't do work that you don't need to do
  Don't allocate memory if you can avoid it
SLOTH
Some DON’Ts (1)                        Be Fast, Be Responsive
  Performance Pointers
  Optimize judiciously
  Avoid creating objects
  Use native methods
  Prefer Virtual over Interface
  Prefer Static over Virtual
  Avoid internal setters and getters
  Declare constants final
  Avoid float and enums
  Use package scope with inner classes
 Source: http://developer.android.com/guide/practices/design/performance.html
SLOTH
Some DON’Ts (1)                           Be Fast, Be Responsive
Responsiveness
"Application Not Responding“-ANR
Respond to user input within 5 seconds
Broadcast Receiver must complete in 10 seconds
     Users perceive a lag longer than 100 to 200ms
     Use Threads and AsyncTasks within Services




Source: http://developer.android.com/guide/practices/design/responsiveness.html
SLOTH
Some DON’Ts (1)   Be Fast, Be Responsive
Responsiveness
Some DON’Ts (2)
Don'ts
DON'T over use WakeLocks
DON'T update Widgets too
   frequently
DON'T update your location
   unnecessarily
DON'T over use Services                   GLUTTONY
                                  Use System Resources Responsibly

 DOs
 DO use Receivers and Alarms not Services and Threads
 DO let users manage updates
Some DON’Ts (2)                        GLUTTONY
                             Use System Resources Responsibly

What is a WakeLock?

Force the CPU to keep running
Force the screen to stay on (or stay bright)
Drains your battery quickly and efficiently
Some DON’Ts (2)                     GLUTTONY
                           Use System Resources Responsibly


Using WakeLock?
Do you really need to use one?

Use the minimum level possible
  PARTIAL_WAKE_LOCK
  SCREEN_DIM_WAKE_LOCK
  SCREEN_BRIGHT_WAKE_LOCK
  FULL_WAKE_LOCK
Release as soon as you can
Specify a timeout
Some DON’Ts (3)
                            HOSTILITY
                        Don’t Fight Your Users




 User experience should be your top priority
 Respect user expectations for navigating your app
 Don't hijack the native experience
 Respect user preferences
Some DON’Ts (3)
Respect User Expectations For Navigation Flow
                                                    HOSTILITY
                                                Don’t Fight Your Users


The back button should always navigate back through
     previously seen screens
Always support trackball navigation
Understand your navigation flow when entry point is a
     notification or widget
Navigating between application elements should be
     easy and intuitive
Some DON’Ts (3)                          HOSTILITY
Don’t Hijack The Native Experience   Don’t Fight Your Users



 Don't hide the status bar Back button should always
      navigate through previous screens
 Use native icons consistently
 Don't override the menu button
 Put menu options behind the
      menu button
Some DON’Ts (4)
Don't use undocumented APIs.
      Seriously. Don't use
      undocumented APIs
Make your app behave
      consistently with the system
Respect the application lifecycle      ARROGANCE
      model                          Don’t Fight The System
Support both landscape and
      portrait modes
Don't disable rotation handling
Some DON’Ts (5)
Avoid Size Discrimination                     DISCRIMINATION
                                               Design For Everyone




Don’t make assumptions about
      screen size or resolutions
Use Relative Layouts and
      Device Independent Pixels
Optimize assets for different
      screen resolutions
Source: http://developer.android.com/guide/practices/screens_support.html
Some DON’Ts (5)
 Ensure Future Hardware Happiness                   DISCRIMINATION
                                                    Design For Everyone
Specify uses-feature node for every API you use.
Mark essential features as required.
Mark optional features as not required.
Check for API existence in code.
Some DON’Ts (5)
 Ensure Future Hardware Happiness                   DISCRIMINATION
                                                    Design For Everyone
Specify uses-feature node for every API you use.
Mark essential features as required.
Mark optional features as not required.
Check for API existence in code.
UX Design Fundamentals
  UI Guidelines
  Designing for Performance
  Designing for Responsiveness
  Supporting Multiple Screens
Location Based Services
Source: http://developer.android.com/guide/topics/location/obtaining-user-location.html
Location Based Services (Contd.)


  How often do you need updates?
  What happens if GPS or Wifi LBS is disabled?
  How accurate do you need to be?
  What is the impact on your battery life?
  What happens if location 'jumps'?
Location Based Services (Contd.)
 Restricting Updates
 • Specify the minimum update frequency
 • Specify the minimum update distance
Location Based Services (Contd.)
Use Criteria to Select a Location Provider
Location Based Services (Contd.)
Use Criteria to Select a Location Provider

 Specify your requirements and preferences
   Allowable power drain
   Required accuracy
   Need for altitude, bearing, and speed
   Can a cost be incurred?
 Find the best provider that meets your criteria
 Relax criteria (in order) until a provider is found
 Can limit to only active providers
 Can use to find all matching providers
UI and UX Design (Some Tips)
UI and UX Design (Some Tips)
UI and UX Design
Some Resources:
1. http://developer.motorola.com/docstools/library/Best_Practices_for_Use
   r_Interfaces/
2. http://www.androidpatterns.com/
3. http://pshyama.wordpress.com/2011/07/05/android-os-research/
4. http://www.slideshare.net/mswolfson/android-ui-patterns
5. http://www.youtube.com/watch?v=M1ZBjlCRfz0
6. http://speckyboy.com/2010/05/10/android-app-developers-gui-kits-
   icons-fonts-and-tools/
7. http://coding.smashingmagazine.com/2011/06/30/designing-for-android/
8. http://www.androiduipatterns.com/2011/07/trending-android-ui-anti-
   patterns.html
Black-Box Testing
 Testing of functionality of the application. The tester knows
  what the software is supposed to do, but not how.
 Specific knowledge of the application's code/internal
  structure not required.
 Test cases are built around specifications and requirements.
 The test designer selects valid and invalid inputs and
  determines the correct output.
 Can be applied to all levels of software testing:
  unit, integration, system and acceptance.

           Input                     Output
                    Black-Box
Black-Box Testing in Android: Robotium
 A test framework created to make it easy to write powerful
  and robust automatic black-box test cases for Android.
 Full support for Activities, Dialogs, Toasts, Menus and Context
  Menus.
 Benefits
      Powerful test with minimal knowledge of app under test
      Handles multiple Android activities automatically
      Minimal time to write solid test cases
      Improved readability of test cases
 Resources
    Project Home: http://code.google.com/p/robotium/
    Wiki: http://code.google.com/p/robotium/wiki/Getting_Started
    Tutorials: http://code.google.com/p/robotium/wiki/RobotiumTutorials
Testing in Android
 Sources:
     http://developer.android.com/guide/topics/testing/testing_android.html
Questions???

More Related Content

Viewers also liked

Day 2 android internals a quick overview
Day 2 android internals a quick overviewDay 2 android internals a quick overview
Day 2 android internals a quick overviewAhsanul Karim
 
Day 4: Android: Getting Active through Activities
Day 4: Android: Getting Active through ActivitiesDay 4: Android: Getting Active through Activities
Day 4: Android: Getting Active through ActivitiesAhsanul Karim
 
Day: 1 Introduction to Mobile Application Development (in Android)
Day: 1 Introduction to Mobile Application Development (in Android)Day: 1 Introduction to Mobile Application Development (in Android)
Day: 1 Introduction to Mobile Application Development (in Android)Ahsanul Karim
 
Day 9: Make Your App Location Aware using Location API
Day 9: Make Your App Location Aware using Location APIDay 9: Make Your App Location Aware using Location API
Day 9: Make Your App Location Aware using Location APIAhsanul Karim
 
Day 5: Android User Interface [View Widgets]
Day 5: Android User Interface [View Widgets]Day 5: Android User Interface [View Widgets]
Day 5: Android User Interface [View Widgets]Ahsanul Karim
 
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & SpinnerAndroid User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & SpinnerAhsanul Karim
 
Action Bar Sherlock tutorial
Action Bar Sherlock tutorialAction Bar Sherlock tutorial
Action Bar Sherlock tutorialAhsanul Karim
 
Day 4: Android: UI Widgets
Day 4: Android: UI WidgetsDay 4: Android: UI Widgets
Day 4: Android: UI WidgetsAhsanul Karim
 
Day 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViewsDay 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViewsAhsanul Karim
 
Android GPS Tutorial
Android GPS TutorialAndroid GPS Tutorial
Android GPS TutorialAhsanul Karim
 
Android User Interface: Basic Form Widgets
Android User Interface: Basic Form WidgetsAndroid User Interface: Basic Form Widgets
Android User Interface: Basic Form WidgetsAhsanul Karim
 
Day 3: Getting Active Through Activities
Day 3: Getting Active Through ActivitiesDay 3: Getting Active Through Activities
Day 3: Getting Active Through ActivitiesAhsanul Karim
 

Viewers also liked (15)

Day 2 android internals a quick overview
Day 2 android internals a quick overviewDay 2 android internals a quick overview
Day 2 android internals a quick overview
 
Day 4: Android: Getting Active through Activities
Day 4: Android: Getting Active through ActivitiesDay 4: Android: Getting Active through Activities
Day 4: Android: Getting Active through Activities
 
Day: 1 Introduction to Mobile Application Development (in Android)
Day: 1 Introduction to Mobile Application Development (in Android)Day: 1 Introduction to Mobile Application Development (in Android)
Day: 1 Introduction to Mobile Application Development (in Android)
 
Android 1.8 sensor
Android 1.8 sensorAndroid 1.8 sensor
Android 1.8 sensor
 
Day 9: Make Your App Location Aware using Location API
Day 9: Make Your App Location Aware using Location APIDay 9: Make Your App Location Aware using Location API
Day 9: Make Your App Location Aware using Location API
 
Day 5: Android User Interface [View Widgets]
Day 5: Android User Interface [View Widgets]Day 5: Android User Interface [View Widgets]
Day 5: Android User Interface [View Widgets]
 
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & SpinnerAndroid User Interface Tutorial: DatePicker, TimePicker & Spinner
Android User Interface Tutorial: DatePicker, TimePicker & Spinner
 
Action Bar Sherlock tutorial
Action Bar Sherlock tutorialAction Bar Sherlock tutorial
Action Bar Sherlock tutorial
 
Day 4: Android: UI Widgets
Day 4: Android: UI WidgetsDay 4: Android: UI Widgets
Day 4: Android: UI Widgets
 
Day 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViewsDay 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViews
 
Training android
Training androidTraining android
Training android
 
Android GPS Tutorial
Android GPS TutorialAndroid GPS Tutorial
Android GPS Tutorial
 
Android User Interface: Basic Form Widgets
Android User Interface: Basic Form WidgetsAndroid User Interface: Basic Form Widgets
Android User Interface: Basic Form Widgets
 
List Views
List ViewsList Views
List Views
 
Day 3: Getting Active Through Activities
Day 3: Getting Active Through ActivitiesDay 3: Getting Active Through Activities
Day 3: Getting Active Through Activities
 

More from Ahsanul Karim

Lecture 5: Storage: Saving Data Database, Files & Preferences
Lecture 5: Storage: Saving Data Database, Files & PreferencesLecture 5: Storage: Saving Data Database, Files & Preferences
Lecture 5: Storage: Saving Data Database, Files & PreferencesAhsanul Karim
 
Lecture 3 getting active through activities
Lecture 3 getting active through activities Lecture 3 getting active through activities
Lecture 3 getting active through activities Ahsanul Karim
 
Lecture 2(b) Android Internals A Quick Overview
Lecture 2(b) Android Internals A Quick OverviewLecture 2(b) Android Internals A Quick Overview
Lecture 2(b) Android Internals A Quick OverviewAhsanul Karim
 
লেকচার ১ (ক)- শুরুর আগে:
লেকচার ১ (ক)- শুরুর আগে:লেকচার ১ (ক)- শুরুর আগে:
লেকচার ১ (ক)- শুরুর আগে:Ahsanul Karim
 
Day 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts APIDay 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts APIAhsanul Karim
 
Day 15: Working in Background
Day 15: Working in BackgroundDay 15: Working in Background
Day 15: Working in BackgroundAhsanul Karim
 
Day 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViewsDay 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViewsAhsanul Karim
 
Day 6: Android BroadcastReceiver Component
Day 6: Android BroadcastReceiver ComponentDay 6: Android BroadcastReceiver Component
Day 6: Android BroadcastReceiver ComponentAhsanul Karim
 
Day 4: Activity lifecycle
Day 4: Activity lifecycleDay 4: Activity lifecycle
Day 4: Activity lifecycleAhsanul Karim
 
Day 1 Android: Before Getting Started
Day 1 Android: Before Getting StartedDay 1 Android: Before Getting Started
Day 1 Android: Before Getting StartedAhsanul Karim
 
Mobile Banking in Bangladesh: An Incomplete Study
Mobile Banking in Bangladesh: An Incomplete StudyMobile Banking in Bangladesh: An Incomplete Study
Mobile Banking in Bangladesh: An Incomplete StudyAhsanul Karim
 
Day1 before getting_started
Day1 before getting_startedDay1 before getting_started
Day1 before getting_startedAhsanul Karim
 
Android Workshop Day 1 Part 2
Android Workshop Day 1 Part 2Android Workshop Day 1 Part 2
Android Workshop Day 1 Part 2Ahsanul Karim
 
Introduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting StartedIntroduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting StartedAhsanul Karim
 

More from Ahsanul Karim (15)

Lecture 5: Storage: Saving Data Database, Files & Preferences
Lecture 5: Storage: Saving Data Database, Files & PreferencesLecture 5: Storage: Saving Data Database, Files & Preferences
Lecture 5: Storage: Saving Data Database, Files & Preferences
 
Lecture 3 getting active through activities
Lecture 3 getting active through activities Lecture 3 getting active through activities
Lecture 3 getting active through activities
 
Lecture 2(b) Android Internals A Quick Overview
Lecture 2(b) Android Internals A Quick OverviewLecture 2(b) Android Internals A Quick Overview
Lecture 2(b) Android Internals A Quick Overview
 
লেকচার ১ (ক)- শুরুর আগে:
লেকচার ১ (ক)- শুরুর আগে:লেকচার ১ (ক)- শুরুর আগে:
লেকচার ১ (ক)- শুরুর আগে:
 
Day 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts APIDay 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts API
 
Day 15: Working in Background
Day 15: Working in BackgroundDay 15: Working in Background
Day 15: Working in Background
 
Day 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViewsDay 8: Dealing with Lists and ListViews
Day 8: Dealing with Lists and ListViews
 
Day 6: Android BroadcastReceiver Component
Day 6: Android BroadcastReceiver ComponentDay 6: Android BroadcastReceiver Component
Day 6: Android BroadcastReceiver Component
 
Day 4: Activity lifecycle
Day 4: Activity lifecycleDay 4: Activity lifecycle
Day 4: Activity lifecycle
 
Day 1 Android: Before Getting Started
Day 1 Android: Before Getting StartedDay 1 Android: Before Getting Started
Day 1 Android: Before Getting Started
 
Mobile Banking in Bangladesh: An Incomplete Study
Mobile Banking in Bangladesh: An Incomplete StudyMobile Banking in Bangladesh: An Incomplete Study
Mobile Banking in Bangladesh: An Incomplete Study
 
GCM for Android
GCM for AndroidGCM for Android
GCM for Android
 
Day1 before getting_started
Day1 before getting_startedDay1 before getting_started
Day1 before getting_started
 
Android Workshop Day 1 Part 2
Android Workshop Day 1 Part 2Android Workshop Day 1 Part 2
Android Workshop Day 1 Part 2
 
Introduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting StartedIntroduction to Android Development: Before Getting Started
Introduction to Android Development: Before Getting Started
 

Recently uploaded

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 

Recently uploaded (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 

Grooming Session Android CWC

  • 2. Outline Problem Set for CWC Judgment Criteria Pragmatic Practices in Android Development Some Dos and Don’ts UX Design Fundamentals Designing for Performance Designing for Responsiveness Supporting Multiple Screens Location Based Services UI Design Patterns Testing
  • 3. Problem Set A courier service company wants to give its delivery employees ability to perform deliveries easily and enable them to do on site reporting quickly. In order to solve this problem, they want to have an Android application which will be delivered to designated employees. The key features of the app would be to 1. See the tasks assigned to an employee 2. See the delivery locations on Maps 3. View task details of a delivery item with associated location information and recipient phone number. 4. After a successful delivery the details are emailed or synchronized with server and task lists are auto updated based on that. 5. Ability to do any reporting from on site. 6. Tracking the performance of an application user through graphical charts or aided system.
  • 4.
  • 5. Problem Set Required Features of Android (For your preparation) 1. Location Based Service 2. Consuming Web Services 3. Integrating Maps Library 4. Using SQLite Database 5. Unit Testing 6. Black-Box Testing
  • 6. Battle: Round 1 1. A codebase and bare bone project along with requirement specification will be provided to each group over online repository on 20th January 2. You have to implement the unimplemented features of the specification 3. You will also have to improve the given source code 4. During round 1 of the battle you’ll be given 3-4 assignments on your project 5. Your deliverables of round 1 of the battle will be judged with the following criteria
  • 7. Judgment Criteria 1. User Experience Design 2. Efficient handling of multiple screen sizes 3. Power efficient design 4. Database design 5. Unit Testing 6. Black-Box Testing 7. Quick integration with open source components 8. Application of Object oriented principles and design patterns
  • 8. Pragmatic Practices: Some Dos and Don’ts
  • 9. Some DON’Ts (1) SLOTH Be Fast, Be Responsive Golden Rules Don't do work that you don't need to do Don't allocate memory if you can avoid it
  • 10. SLOTH Some DON’Ts (1) Be Fast, Be Responsive Performance Pointers Optimize judiciously Avoid creating objects Use native methods Prefer Virtual over Interface Prefer Static over Virtual Avoid internal setters and getters Declare constants final Avoid float and enums Use package scope with inner classes Source: http://developer.android.com/guide/practices/design/performance.html
  • 11. SLOTH Some DON’Ts (1) Be Fast, Be Responsive Responsiveness "Application Not Responding“-ANR Respond to user input within 5 seconds Broadcast Receiver must complete in 10 seconds Users perceive a lag longer than 100 to 200ms Use Threads and AsyncTasks within Services Source: http://developer.android.com/guide/practices/design/responsiveness.html
  • 12. SLOTH Some DON’Ts (1) Be Fast, Be Responsive Responsiveness
  • 13. Some DON’Ts (2) Don'ts DON'T over use WakeLocks DON'T update Widgets too frequently DON'T update your location unnecessarily DON'T over use Services GLUTTONY Use System Resources Responsibly DOs DO use Receivers and Alarms not Services and Threads DO let users manage updates
  • 14. Some DON’Ts (2) GLUTTONY Use System Resources Responsibly What is a WakeLock? Force the CPU to keep running Force the screen to stay on (or stay bright) Drains your battery quickly and efficiently
  • 15. Some DON’Ts (2) GLUTTONY Use System Resources Responsibly Using WakeLock? Do you really need to use one? Use the minimum level possible PARTIAL_WAKE_LOCK SCREEN_DIM_WAKE_LOCK SCREEN_BRIGHT_WAKE_LOCK FULL_WAKE_LOCK Release as soon as you can Specify a timeout
  • 16. Some DON’Ts (3) HOSTILITY Don’t Fight Your Users User experience should be your top priority Respect user expectations for navigating your app Don't hijack the native experience Respect user preferences
  • 17. Some DON’Ts (3) Respect User Expectations For Navigation Flow HOSTILITY Don’t Fight Your Users The back button should always navigate back through previously seen screens Always support trackball navigation Understand your navigation flow when entry point is a notification or widget Navigating between application elements should be easy and intuitive
  • 18. Some DON’Ts (3) HOSTILITY Don’t Hijack The Native Experience Don’t Fight Your Users Don't hide the status bar Back button should always navigate through previous screens Use native icons consistently Don't override the menu button Put menu options behind the menu button
  • 19. Some DON’Ts (4) Don't use undocumented APIs. Seriously. Don't use undocumented APIs Make your app behave consistently with the system Respect the application lifecycle ARROGANCE model Don’t Fight The System Support both landscape and portrait modes Don't disable rotation handling
  • 20. Some DON’Ts (5) Avoid Size Discrimination DISCRIMINATION Design For Everyone Don’t make assumptions about screen size or resolutions Use Relative Layouts and Device Independent Pixels Optimize assets for different screen resolutions Source: http://developer.android.com/guide/practices/screens_support.html
  • 21. Some DON’Ts (5) Ensure Future Hardware Happiness DISCRIMINATION Design For Everyone Specify uses-feature node for every API you use. Mark essential features as required. Mark optional features as not required. Check for API existence in code.
  • 22. Some DON’Ts (5) Ensure Future Hardware Happiness DISCRIMINATION Design For Everyone Specify uses-feature node for every API you use. Mark essential features as required. Mark optional features as not required. Check for API existence in code.
  • 23. UX Design Fundamentals UI Guidelines Designing for Performance Designing for Responsiveness Supporting Multiple Screens
  • 24. Location Based Services Source: http://developer.android.com/guide/topics/location/obtaining-user-location.html
  • 25. Location Based Services (Contd.) How often do you need updates? What happens if GPS or Wifi LBS is disabled? How accurate do you need to be? What is the impact on your battery life? What happens if location 'jumps'?
  • 26. Location Based Services (Contd.) Restricting Updates • Specify the minimum update frequency • Specify the minimum update distance
  • 27. Location Based Services (Contd.) Use Criteria to Select a Location Provider
  • 28. Location Based Services (Contd.) Use Criteria to Select a Location Provider Specify your requirements and preferences Allowable power drain Required accuracy Need for altitude, bearing, and speed Can a cost be incurred? Find the best provider that meets your criteria Relax criteria (in order) until a provider is found Can limit to only active providers Can use to find all matching providers
  • 29. UI and UX Design (Some Tips)
  • 30. UI and UX Design (Some Tips)
  • 31. UI and UX Design Some Resources: 1. http://developer.motorola.com/docstools/library/Best_Practices_for_Use r_Interfaces/ 2. http://www.androidpatterns.com/ 3. http://pshyama.wordpress.com/2011/07/05/android-os-research/ 4. http://www.slideshare.net/mswolfson/android-ui-patterns 5. http://www.youtube.com/watch?v=M1ZBjlCRfz0 6. http://speckyboy.com/2010/05/10/android-app-developers-gui-kits- icons-fonts-and-tools/ 7. http://coding.smashingmagazine.com/2011/06/30/designing-for-android/ 8. http://www.androiduipatterns.com/2011/07/trending-android-ui-anti- patterns.html
  • 32. Black-Box Testing  Testing of functionality of the application. The tester knows what the software is supposed to do, but not how.  Specific knowledge of the application's code/internal structure not required.  Test cases are built around specifications and requirements.  The test designer selects valid and invalid inputs and determines the correct output.  Can be applied to all levels of software testing: unit, integration, system and acceptance. Input Output Black-Box
  • 33. Black-Box Testing in Android: Robotium  A test framework created to make it easy to write powerful and robust automatic black-box test cases for Android.  Full support for Activities, Dialogs, Toasts, Menus and Context Menus.  Benefits  Powerful test with minimal knowledge of app under test  Handles multiple Android activities automatically  Minimal time to write solid test cases  Improved readability of test cases  Resources  Project Home: http://code.google.com/p/robotium/  Wiki: http://code.google.com/p/robotium/wiki/Getting_Started  Tutorials: http://code.google.com/p/robotium/wiki/RobotiumTutorials
  • 34. Testing in Android Sources: http://developer.android.com/guide/topics/testing/testing_android.html