Book description
Android How to Program, Second Editionprovides a clear and entertaining App-driven introduction to Android 4.3 and 4.4 development for both introductory- and intermediate-level programming courses. It also serves as a great reference and tutorial to learn Android programming.
The Deitels' App-driven Approach is simply the best way to master Android programming! The Deitels teach Android programming through seven complete, working Android Apps in the print book and more online. Each chapter presents new concepts through a single App. The authors first provide an introduction to the app, an app test-drive showing one or more sample executions, and a technologies overview. Next, the authors proceed with a detailed code walkthrough of the app’s source code in which they discuss the programming concepts and demonstrate the functionality of the Android APIs used in the app. The book also has an extensive introduction to programming using the Java language, making this book appropriate for Java courses that want to add an App-programming flavor.
Teaching and Learning Experience
This program will provide a better teaching and learning experience—for you and your students.
Add an App Component to your Java Course: The appendices provide a condensed, friendly introduction to Java and the object-oriented programming techniques students will need to develop Android apps.
Motivate Students with an App-driven Approach to Android 4.3 and 4.4 Development: Concepts are presented in the context of 7 complete working Android Apps, using the latest mobile computing technologies.
Enhance Learning with Outstanding Pedagogical Features: The Deitels present hundreds of Android short-answer questions and app-development exercises complete with syntax coloring, code walkthroughs and sample outputs.
Table of contents
- About This eBook
- Title Page
- Copyright Page
- Deitel® Series Page
- Dedication Page
- Contents
-
Preface
- Android How to Program, 2/e
- Intended Audiences
- App-Development Courses
- Android Ecosystem: Competition, Innovation, Explosive Growth and Opportunities
- App-Driven Approach
- Online Chapters and Book Updates
- Copyright Notice and Code License
- Getting up to Speed in Java and XML
- Key Features of Android How to Program, 2/e
- Working with Open-Source Apps
- Pedagogic Features
- Software Used in Android How to Program, 2/e
- Instructor Resources
- Before You Begin
- Acknowledgments
- About the Authors
- Deitel® Dive-Into® Series Programming Languages Training
-
Before You Begin
- Font and Naming Conventions
- Software and Hardware System Requirements
- Installing the Java Development Kit (JDK)
- Android Integrated Development Environment (IDE) Options
- Installing the Android SDK/ADT Bundle
- Installing Android Studio
- Set the Java Compiler Compliance Level and Show Line Numbers
- Android 4.3 SDK
- Creating Android Virtual Devices (AVDs)
- (Optional) Setting Up an Android Device for Development
- Obtaining the Book’s Code Examples
- A Note Regarding the Android Development Tools
-
1. Introduction to Android
- 1.1. Introduction
- 1.2. Android—The World’s Leading Mobile Operating System
- 1.3. Android Features
- 1.4. Android Operating System
- 1.5. Downloading Apps from Google Play
- 1.6. Packages
- 1.7. Android Software Development Kit (SDK)
- 1.8. Object-Oriented Programming: A Quick Refresher
- 1.9. Test-Driving the Doodlz App in an Android Virtual Device (AVD)
- 1.10. Building Great Android Apps
- 1.11. Android Development Resources
- 1.12. Wrap-Up
-
2. Welcome App
- 2.1. Introduction
- 2.2. Technologies Overview
- 2.3. Creating an App
- 2.4. Android Developer Tools Window
- 2.5. Building the App’s GUI with the Graphical Layout Editor
- 2.6. Running the Welcome App
- 2.7. Making Your App Accessible
-
2.8. Internationalizing Your App
- Localization
- Naming the Folders for Localized Resources
- Adding a Localization Folder to the App’s Project
- Copying the strings.xml File into the values-es Folder
- Localizing the Strings
- Testing the App in Spanish
- Returning the AVD (or Device) to English
- TalkBack and Localization
- Localization Checklist
- 2.9. Wrap-Up
-
3. Tip Calculator App
- 3.1. Introduction
- 3.2. Test-Driving the Tip Calculator App
-
3.3. Technologies Overview
- 3.3.1. Class Activity
- 3.3.2. Activity Lifecycle Methods
- 3.3.3. Arranging Views with LinearLayout and GridLayout
- 3.3.4. Creating and Customizing the GUI with the Graphical Layout Editor and the Outline and Properties Windows
- 3.3.5. Formatting Numbers as Locale-Specific Currency and Percentage Strings
- 3.3.6. Implementing Interface TextWatcher for Handling EditText Text Changes
- 3.3.7. Implementing Interface OnSeekBarChangeListener for Handling SeekBar Thumb Position Changes
- 3.3.8. AndroidManifest.xml
- 3.4. Building the App’s GUI
-
3.5. Adding Functionality to the App
- The package and import Statements
- Tip Calculator App Activity and the Activity Lifecycle
- Class Variables and Instance Variables
- Overriding Method onCreate of Class Activity
- onCreate’s Bundle Parameter
- Generated R Class Contains Resource IDs
- Inflating the GUI
- Getting References to the Widgets
- Displaying Initial Values in the TextViews
- Registering the Event Listeners
- Method updateStandard of Class MainActivity
- Method updateCustom of Class MainActivity
- Anonymous Inner Class That Implements Interface OnSeekBarChangeListener
- Overriding Method onProgressChanged of Interface OnSeekBarChangeListener
- Overriding Methods onStartTrackingTouch and onStopTrackingTouch of Interface OnSeekBarChangeListener
- Anonymous Inner Class That Implements Interface TextWatcher
- Overriding Method onTextChanged of Interface TextWatcher
- Other Methods of the amountEditTextWatcher TextWatcher
- 3.6. AndroidManifest.xml
- 3.7. Wrap-Up
-
4. Twitter® Searches App
- 4.1. Introduction
- 4.2. Test-Driving the App
- 4.3. Technologies Overview
- 4.4. Building the App’s GUI
-
4.5. Building the MainActivity Class
- 4.5.1. package and import Statements
- 4.5.2. Extending ListActivity
- 4.5.3. Fields of Class MainActivity
- 4.5.4. Overriding Activity Method onCreate
- 4.5.5. Anonymous Inner Class That Implements the saveButton’s OnClickListener to Save a New or Updated Search
- 4.5.6. addTaggedSearch Method
- 4.5.7. Anonymous Inner Class That Implements the ListView’s OnItemClickListener to Display Search Results
- 4.5.8. Anonymous Inner Class That Implements the ListView’s OnItemLongClickListener to Share, Edit or Delete a Search
- 4.5.9. shareSearch Method
- 4.5.10. deleteSearch Method
- 4.6. AndroidManifest.xml
- 4.7. Wrap-Up
-
5. Flag Quiz App
- 5.1. Introduction
- 5.2. Test-Driving the Flag Quiz App
-
5.3. Technologies Overview
- 5.3.1. Menus
- 5.3.2. Fragments
- 5.3.3. Fragment Lifecycle Methods
- 5.3.4. Managing Fragments
- 5.3.5. Preferences
- 5.3.6. assets Folder
- 5.3.7. Resource Folders
- 5.3.8. Supporting Different Screen Sizes and Resolutions
- 5.3.9. Determining the Screen Size
- 5.3.10. Toasts for Displaying Messages
- 5.3.11. Using a Handler to Execute a Runnable in the Future
- 5.3.12. Applying an Animation to a View
- 5.3.13. Logging Exception Messages
- 5.3.14. Using an Explicit Intent to Launch Another Activity in the Same App
- 5.3.15. Java Data Structures
-
5.4. Building the GUI and Resource Files
- 5.4.1. Creating the Project
- 5.4.2. strings.xml and Formatted String Resources
- 5.4.3. arrays.xml
- 5.4.4. colors.xml
- 5.4.5. dimens.xml
- 5.4.6. activity_settings.xml Layout
- 5.4.7. activity_main.xml Layout for Phone and Tablet Portrait Orientation
- 5.4.8. fragment_quiz.xml Layout
- 5.4.9. activity_main.xml Layout for Tablet Landscape Orientation
- 5.4.10. preferences.xml for Specifying the App’s Settings
- 5.4.11. Creating the Flag Shake Animation
-
5.5. MainActivity Class
- 5.5.1. package Statement, import Statements and Fields
- 5.5.2. Overridden Activity Method onCreate
- 5.5.3. Overridden Activity Method onStart
- 5.5.4. Overridden Activity Method onCreateOptionsMenu
- 5.5.5. Overridden Activity Method onOptionsItemSelected
- 5.5.6. Anonymous Inner Class That Implements OnSharedPreferenceChangeListener
-
5.6. QuizFragment Class
- 5.6.1. package Statement and import Statements
- 5.6.2. Fields
- 5.6.3. Overridden Fragment Method onCreateView
- 5.6.4. Method updateGuessRows
- 5.6.5. Method updateRegions
- 5.6.6. Method resetQuiz
- 5.6.7. Method loadNextFlag
- 5.6.8. Method getCountryName
- 5.6.9. Anonymous Inner Class That Implements OnClickListener
- 5.6.10. Method disableButtons
- 5.7. SettingsFragment Class
- 5.8. SettingsActivity Class
- 5.9. AndroidManifest.xml
- 5.10. Wrap-Up
-
6. Cannon Game App
- 6.1. Introduction
- 6.2. Test-Driving the Cannon Game App
-
6.3. Technologies Overview
- 6.3.1. Attaching a Custom View to a Layout
- 6.3.2. Using the Resource Folder raw
- 6.3.3. Activity and Fragment Lifecycle Methods
- 6.3.4. Overriding View Method onTouchEvent
- 6.3.5. Adding Sound with SoundPool and AudioManager
- 6.3.6. Frame-by-Frame Animation with Threads, SurfaceView and SurfaceHolder
- 6.3.7. Simple Collision Detection
- 6.3.8. Drawing Graphics Using Paint and Canvas
- 6.4. Building the App’s GUI and Resource Files
- 6.5. Class Line Maintains a Line’s Endpoints
- 6.6. MainActivity Subclass of Activity
- 6.7. CannonGameFragment Subclass of Fragment
-
6.8. CannonView Subclass of View
- 6.8.1. package and import Statements
- 6.8.2. Instance Variables and Constants
- 6.8.3. Constructor
- 6.8.4. Overriding View Method onSizeChanged
- 6.8.5. Method newGame
- 6.8.6. Method updatePositions
- 6.8.7. Method fireCannonball
- 6.8.8. Method alignCannon
- 6.8.9. Method drawGameElements
- 6.8.10. Method showGameOverDialog
- 6.8.11. Methods stopGame and releaseResources
- 6.8.12. Implementing the SurfaceHolder.Callback Methods
- 6.8.13. Overriding View Method onTouchEvent
- 6.8.14. CannonThread: Using a Thread to Create a Game Loop
- 6.9. Wrap-Up
-
7. Doodlz App
- 7.1. Introduction
-
7.2. Technologies Overview
- 7.2.1. Using SensorManager to Listen for Accelerometer Events
- 7.2.2. Custom DialogFragments
- 7.2.3. Drawing with Canvas and Bitmap
- 7.2.4. Processing Multiple Touch Events and Storing Lines in Paths
- 7.2.5. Android 4.4 Immersive Mode
- 7.2.6. GestureDetector and SimpleOnGestureListener
- 7.2.7. Saving the Drawing to the Device’s Gallery
- 7.2.8. Android 4.4 Printing and the Android Support Library’s PrintHelper Class
-
7.3. Building the App’s GUI and Resource Files
- 7.3.1. Creating the Project
- 7.3.2. strings.xml
- 7.3.3. dimens.xml
- 7.3.4. Menu for the DoodleFragment
- 7.3.5. activity_main.xml Layout for MainActivity
- 7.3.6. fragment_doodle.xml Layout for DoodleFragment
- 7.3.7. fragment_color.xml Layout for ColorDialogFragment
- 7.3.8. fragment_line_width.xml Layout for LineWidthDialogFragment
- 7.3.9. Adding Class EraseImageDialogFragment
- 7.4. MainActivity Class
-
7.5. DoodleFragment Class
- package Statement, import Statements and Fields
- Overriding Fragment Method onCreateView
- Methods onStart and enableAccelerometerListening
- Methods onPause and disableAccelerometerListening
- Anonymous Inner Class That Implements Interface SensorEventListener to Process Accelerometer Events
- Method confirmErase
- Overridden Fragment Methods onCreateOptionsMenu and onOptionsItemSelected
- Methods getDoodleView and setDialogOnScreen
-
7.6. DoodleView Class
- DooldleView package Statement and import Statements
- DoodleView static and Instance Variables
- DoodleView Constructor
- Overridden View Method onSizeChanged
- DoodleView Methods clear, setDrawingColor, getDrawingColor, setLineWidth and getLineWidth
- Overridden View Method onDraw
- DoodleView Methods hideSystemBars and showSystemBars
- Anonymous Inner Class that Implements Interface SimpleOnGestureListener
- Overridden View Method onTouchEvent
- touchStarted Method of Class DoodleView
- touchMoved Method of Class DoodleView
- touchEnded Method of Class DoodleView
- DoodleView Method saveImage
- DoodleView Method printImage
- 7.7. ColorDialogFragment Class
- 7.8. LineWidthDialogFragment Class
- 7.9. EraseImageDialogFragment Class
- 7.10. Wrap-Up
-
8. Address Book App
- 8.1. Introduction
- 8.2. Test-Driving the Address Book App
-
8.3. Technologies Overview
- 8.3.1. Displaying Fragments with FragmentTransactions
- 8.3.2. Communicating Data Between a Fragment and a Host Activity
- 8.3.3. Method onSaveInstanceState
- 8.3.4. Defining Styles and Applying Them to GUI Components
- 8.3.5. Specifying a Background for a TextView
- 8.3.6. Extending Class ListFragment to Create a Fragment That Contains a ListView
- 8.3.7. Manipulating a SQLite Database
- 8.3.8. Performing Database Operations Outside the GUI Thread with AsyncTasks
-
8.4. Building the GUI and Resource Files
- 8.4.1. Creating the Project
- 8.4.2. Creating the App’s Classes
- 8.4.3. strings.xml
- 8.4.4. styles.xml
- 8.4.5. textview_border.xml
- 8.4.6. MainActivity’s Layout: activity_main.xml
- 8.4.7. DetailsFragment’s Layout: fragment_details.xml
- 8.4.8. AddEditFragment’s Layout: fragment_add_edit.xml
- 8.4.9. Defining the Fragments’ Menus
-
8.5. MainActivity Class
- MainActivity package Statement, import statements and Fields
- MainActivity Overridden onCreate Method
- MainActivity Overridden onResume Method
- MainActivity Method onContactSelected
- MainActivity Method displayContact
- MainActivity Method onAddContact
- MainActivity Method displayAddEditFragment
- MainActivity Method onContactDeleted
- MainActivity Method onEditContact
- MainActivity Method onAddEditCompleted
-
8.6. ContactListFragment Class
- ContactListFragment package Statement and import Statements
- ContactListFragmentListener Interface and ContactListFragment Instance Variables
- ContactListFragment Overridden Methods onAttach and onDetach
- ContactListFragment Overridden Method onViewCreated
- Configuring the CursorAdapter That Binds Database Data to the ListView
- viewContactListener That Processes ListView Item Selection Events
- ContactListFragment Overridden Method onResume
- GetContactsTask Subclass of AsyncTask
- ContactListFragment Overridden Method onStop
- ContactListFragment Overridden Methods onCreateOptionsMenu and onOptionsItemSelected
- ContactListFragment Method updateContactList
-
8.7. AddEditFragment Class
- AddEditFragment package Statement and import Statements
- AddEditFragmentListener Interface
- AddEditFragment Instance Variables
- AddEditFragment Overridden Methods onAttach and onDetach
- AddEditFragment Overridden Method onCreateView
- OnClickListener to Process Save Contact Button Events
- AddEditFragment Method saveContact
-
8.8. DetailsFragment Class
- DetailsFragment package Statement and import Statements
- DetailsFragmentListener Interface
- DetailsFragment Instance Variables
- DetailsFragment Overridden Methods onAttach and onDetach
- DetailsFragment Overridden Method onCreateView
- DetailsFragment Overridden Method onResume
- DetailsFragment Overridden Method onSaveInstanceState
- DetailsFragment Overridden Methods onCreateOptionsMenu and onOptionsItemSelected
- LoadContactTask Subclass of AsyncTask
- Method deleteContact and DialogFragment confirmDelete
-
8.9. DatabaseConnector Utility Class
- package Statement, import Statements and Fields
- DatabaseConnector Constructor and Methods open and close
- DatabaseConnector Method insertContact
- DatabaseConnector Method updateContact
- Method getAllContacts
- Method getOneContact
- Method deleteContact
- private Nested Class DatabaseOpenHelper That Extends SQLiteOpenHelper
- 8.10. Wrap-Up
-
9. Google Play and App Business Issues
- 9.1. Introduction
- 9.2. Preparing Your Apps for Publication
- 9.3. Pricing Your App: Free or Fee
- 9.4. Monetizing Apps with In-App Advertising
- 9.5. Monetizing Apps: Using In-App Billing to Sell Virtual Goods
- 9.6. Registering at Google Play
- 9.7. Setting Up a Google Wallet Merchant Account
- 9.8. Uploading Your Apps to Google Play
- 9.9. Launching the Play Store from Within Your App
- 9.10. Managing Your Apps in Google Play
- 9.11. Other Android App Marketplaces
- 9.12. Other Popular Mobile App Platforms
- 9.13. Marketing Your Apps
- 9.14. Wrap-Up
-
A. Introduction to Java Applications
- A.1. Introduction
- A.2. Your First Program in Java: Printing a Line of Text
- A.3. Modifying Your First Java Program
- A.4 Displaying Text with printf
-
A.5 Another Application: Adding Integers
- Import Declarations
- Declaring Class Addition
- Declaring and Creating a Scanner to Obtain User Input from the Keyboard
- Declaring Variables to Store Integers
- Prompting the User for Input
- Obtaining an int as Input from the User
- Prompting for and Inputting a Second int
- Using Variables in a Calculation
- Displaying the Result of the Calculation
- Java API Documentation
- A.6. Memory Concepts
- A.7. Arithmetic
- A.8. Decision Making: Equality and Relational Operators
- A.9. Wrap-Up
-
B. Introduction to Classes, Objects, Methods and Strings
- B.1. Introduction
- B.2. Declaring a Class with a Method and Instantiating an Object of a Class
- B.3. Declaring a Method with a Parameter
- B.4. Instance Variables, set Methods and get Methods
- B.5. Primitive Types vs. Reference Types
- B.6. Initializing Objects with Constructors
- B.7. Floating-Point Numbers and Type double
- B.8. Wrap-Up
-
C. Control Statements
- C.1. Introduction
- C.2. Algorithms
- C.3. Pseudocode
- C.4. Control Structures
- C.5. if Single-Selection Statement
- C.6. if...else Double-Selection Statement
- C.7. while Repetition Statement
- C.8. Case Study: Counter-Controlled Repetition
- C.9. Case Study: Sentinel-Controlled Repetition
- C.10. Case Study: Nested Control Statements
- C.11. Compound Assignment Operators
- C.12. Increment and Decrement Operators
- C.13. Primitive Types
- C.14. Essentials of Counter-Controlled Repetition
- C.15. for Repetition Statement
- C.16. Examples Using the for Statement
- C.17. do...while Repetition Statement
- C.18. switch Multiple-Selection Statement
- C.19. break and continue Statements
- C.20. Logical Operators
- C.21. Wrap-Up
-
D. Methods: A Deeper Look
- D.1. Introduction
- D.2. Program Modules in Java
- D.3. static Methods, staticFields and Class Math
- D.4. Declaring Methods with Multiple Parameters
- D.5. Notes on Declaring and Using Methods
- D.6. Method-Call Stack and Activation Records
- D.7. Argument Promotion and Casting
- D.8. Java API Packages
- D.9. Introduction to Random-Number Generation
- D.10. Case Study: A Game of Chance; Introducing Enumerations
- D.11. Scope of Declarations
- D.12. Method Overloading
- D.13. Wrap-Up
-
E. Arrays and ArrayLists
- E.1. Introduction
- E.2. Arrays
- E.3. Declaring and Creating Arrays
-
E.4. Examples Using Arrays
- Creating and Initializing an Array
- Using an Array Initializer
- Calculating the Values to Store in an Array
- Using Bar Charts to Display Array Data Graphically
- Using the Elements of an Array as Counters
- Using Arrays to Analyze Survey Results
- The frequency Array
- Summarizing the Results
- Exception Handling: Processing the Incorrect Response
- The try Statement
- Executing the catch Block
- toString Method of the Exception Parameter
- E.5. Case Study: Card Shuffling and Dealing Simulation
- E.6. Enhanced for Statement
- E.7. Passing Arrays to Methods
- E.8. Case Study: Class GradeBook Using an Array to Store Grades
- E.9. Multidimensional Arrays
- E.10. Case Study: Class GradeBook Using a Two-Dimensional Array
- E.11. Class Arrays
- E.12. Introduction to Collections and Class ArrayList
- E.13. Wrap-Up
-
F. Classes and Objects: A Deeper Look
- F.1. Introduction
- F.2. Time Class Case Study
- F.3. Controlling Access to Members
- F.4. Referring to the Current Object’s Members with the this Reference
- F.5. Time Class Case Study: Overloaded Constructors
- F.6. Default and No-Argument Constructors
- F.7. Composition
- F.8. Enumerations
- F.9. Garbage Collection
- F.10. static Class Members
- F.11. final Instance Variables
- F.12. Packages
- F.13. Package Access
- F.14. Wrap-Up
-
G. Object-Oriented Programming: Inheritance and Polymorphism
- G.1. Introduction to Inheritance
- G.2. Superclasses and Subclasses
- G.3. protected Members
-
G.4. Relationship between Superclasses and Subclasses
- G.4.1. Creating and Using a CommissionEmployee Class
- G.4.2. Creating and Using a BasePlusCommissionEmployee Class
- G.4.3. Creating a CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy
- G.4.4. CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables
- G.4.5. CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables
- G.5. Class Object
- G.6. Introduction to Polymorphism
- G.7. Polymorphism: An Example
- G.8. Demonstrating Polymorphic Behavior
- G.9. Abstract Classes and Methods
-
G.10. Case Study: Payroll System Using Polymorphism
- G.10.1. Abstract Superclass Employee
- G.10.2. Concrete Subclass SalariedEmployee
- G.10.3. Concrete Subclass HourlyEmployee
- G.10.4. Concrete Subclass CommissionEmployee
- G.10.5. Indirect Concrete Subclass BasePlusCommissionEmployee
- G.10.6. Polymorphic Processing, Operator instanceof and Downcasting
- G.10.7. Summary of the Allowed Assignments Between Superclass and Subclass Variables
- G.11. final Methods and Classes
-
G.12. Case Study: Creating and Using Interfaces
- Standardizing Interactions
- Software Objects Communicate Via Interfaces
- Using an Interface
- Relating Disparate Types
- Interfaces vs. Abstract Classes
- Tagging Interfaces
- G.12.1. Developing a Payable Hierarchy
- G.12.2. Interface Payable
- G.12.3. Class Invoice
- G.12.4. Modifying Class Employee to Implement Interface Payable
- G.12.5. Modifying Class SalariedEmployee for Use in the Payable Hierarchy
- G.12.6. Using Interface Payable to Process Invoices and Employees Polymorphically
- G.13. Common Interfaces of the Java API
- G.14. Wrap-Up
-
H. Exception Handling: A Deeper Look
- H.1. Introduction
- H.2. Example: Divide by Zero without Exception Handling
- H.3. Example: Handling ArithmeticExceptions and InputMismatchExceptions
- H.4. When to Use Exception Handling
- H.5. Java Exception Hierarchy
- H.6. finally Block
- H.7. Stack Unwinding and Obtaining Information from an Exception Object
- H.8. Wrap-Up
-
I. GUI Components and Event Handling
- I.1. Introduction
- I.2. Nimbus Look-and-Feel
-
I.3. Text Fields and an Introduction to Event Handling with Nested Classes
- Specifying the Layout
- Creating the GUI
- Steps Required to Set Up Event Handling for a GUI Component
- Using a Nested Class to Implement an Event Handler
- Nested Class TextFieldHandler
- Registering the Event Handler for Each Text Field
- Details of Class TextFieldHandler’s actionPerformed Method
- Class TextFieldTest
- I.4. Common GUI Event Types and Listener Interfaces
- I.5. How Event Handling Works
- I.6. JButton
- I.7. JComboBox; Using an Anonymous Inner Class for Event Handling
- I.8. Adapter Classes
- I.9. Wrap-Up
-
J. Other Java Topics
- J.1. Introduction
- J.2. Collections Overview
- J.3. Type-Wrapper Classes for Primitive Types
- J.4. Interface Collection and Class Collections
- J.5. Lists
- J.6. Collections Methods
- J.7. Interface Queue
- J.8. Sets
- J.9. Maps
- J.10. Introduction to Files and Streams
- J.11. Class File
- J.12. Introduction to Object Serialization
- J.13. Introduction to Multithreading
- J.14. Creating and Executing Threads with the Executor Framework
- J.15. Overview of Thread Synchronization
- J.16. Concurrent Collections Overview
- J.17. Multithreading with GUI
- J.18. Wrap-Up
- K. Operator Precedence Chart
- L. Primitive Types
- Index
Product information
- Title: Android™ How to Program, Second Edition
- Author(s):
- Release date: January 2014
- Publisher(s): Pearson
- ISBN: 9780133802092
You might also like
book
Android Application Development All-in-One For Dummies, 3rd Edition
Conquer the world of Android app development Android has taken over the mobile and TV markets …
article
Reinventing the Organization for GenAI and LLMs
Previous technology breakthroughs did not upend organizational structure, but generative AI and LLMs will. We now …
book
Android 9 Development Cookbook - Third Edition
Build feature-rich, reliable Android Pie apps with the help of more than 100 proven industry standard …
book
Android Software Internals Quick Reference: A Field Manual and Security Reference Guide to Java-based Android Components
Use this handy field guide as a quick reference book and cheat sheet for all of …