Phát Triển Ứng Dụng Android: Hướng Dẫn Chi Tiết

Tài liệu nghiên cứu Android application development, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về ., phục vụ nghiên cứu và ứng dụng thực tiễn

Trường đại học

O'Reilly Media, Inc.

Chuyên ngành

Phát Triển Ứng Dụng Android

Người đăng

Ẩn danh

Thể loại

sách

2023

336
5
0

Phí lưu trữ

75 Point

Mục lục chi tiết

1. CHƯƠNG 1: GETTING TO KNOW ANDROID

1.1. Why Android?

1.2. Framework

2. SETTING UP YOUR ANDROID DEVELOPMENT ENVIRONMENT

3. USING THE ANDROID DEVELOPMENT ENVIRONMENT FOR REAL APPLICATIONS

4. UNDER THE COVERS: STARTUP CODE AND RESOURCES IN THE MJANDROID APPLICATION

5. DEBUGGING ANDROID APPLICATIONS

6. THE APIDEMOS APPLICATION

7. SIGNING AND PUBLISHING YOUR APPLICATION

8. PERSISTENT DATA STORAGE: SQLITE DATABASES AND CONTENT PROVIDERS

9. LOCATION AND MAPPING

10. ANDROID GUI ARCHITECTURE

11. ANDROID VIEWS

12. DRAWING 2D AND 3D GRAPHICS

13. INTER-PROCESS COMMUNICATION

14. SIMPLE PHONE CALLS

15. TELEPHONY STATE INFORMATION AND ANDROID TELEPHONY CLASSES

APPENDIX: WIRELESS PROTOCOLS

PREFACE

ACKNOWLEDGMENTS

Tóm tắt

I. Tổng Quan Về Phát Triển Ứng Dụng Android Hướng Dẫn Cơ Bản

Phát triển ứng dụng Android đã trở thành một lĩnh vực hấp dẫn cho các lập trình viên và doanh nghiệp. Với sự phát triển mạnh mẽ của hệ sinh thái Android, việc nắm vững các kiến thức cơ bản là rất quan trọng. Bài viết này sẽ cung cấp cái nhìn tổng quan về quy trình phát triển ứng dụng Android, từ việc thiết lập môi trường phát triển đến việc triển khai ứng dụng lên cửa hàng.

1.1. Lập Trình Android Ngôn Ngữ và Công Cụ Cần Thiết

Lập trình Android chủ yếu sử dụng ngôn ngữ Java và Kotlin. Các công cụ phát triển như Android Studio và SDK Android là không thể thiếu. Việc hiểu rõ về các công cụ này sẽ giúp lập trình viên dễ dàng hơn trong việc phát triển ứng dụng.

1.2. Các Framework Android Phổ Biến

Có nhiều framework hỗ trợ phát triển ứng dụng Android như Flutter, React Native và Xamarin. Mỗi framework có những ưu điểm riêng, giúp lập trình viên lựa chọn phù hợp với dự án của mình.

II. Thách Thức Trong Phát Triển Ứng Dụng Android Giải Quyết Vấn Đề

Phát triển ứng dụng Android không chỉ đơn thuần là viết mã. Các lập trình viên thường gặp phải nhiều thách thức như tối ưu hóa hiệu suất, tương thích với nhiều thiết bị và xử lý lỗi. Bài viết này sẽ phân tích những thách thức chính và cách giải quyết chúng.

2.1. Tối Ưu Hóa Ứng Dụng Android

Tối ưu hóa ứng dụng Android là một phần quan trọng để đảm bảo hiệu suất tốt. Các kỹ thuật như giảm kích thước ứng dụng, tối ưu hóa hình ảnh và sử dụng bộ nhớ hiệu quả sẽ được thảo luận.

2.2. Kiểm Thử Ứng Dụng Android Phương Pháp và Công Cụ

Kiểm thử ứng dụng là bước không thể thiếu trong quy trình phát triển. Sử dụng các công cụ như Espresso và JUnit giúp phát hiện lỗi sớm và cải thiện chất lượng ứng dụng.

III. Phương Pháp Phát Triển Ứng Dụng Android Các Bước Cụ Thể

Để phát triển một ứng dụng Android thành công, cần tuân theo một quy trình rõ ràng. Bài viết này sẽ hướng dẫn từng bước từ việc lên ý tưởng đến triển khai ứng dụng.

3.1. Lên Ý Tưởng và Thiết Kế Giao Diện Người Dùng

Bước đầu tiên trong phát triển ứng dụng là lên ý tưởng và thiết kế giao diện người dùng. Sử dụng các công cụ như Figma hoặc Adobe XD giúp tạo ra các mẫu giao diện trực quan.

3.2. Lập Trình và Triển Khai Ứng Dụng

Sau khi thiết kế, lập trình viên sẽ bắt đầu viết mã cho ứng dụng. Việc triển khai ứng dụng lên Google Play Store cũng cần tuân thủ các quy định và tiêu chuẩn của Google.

IV. Ứng Dụng Thực Tiễn Của Phát Triển Ứng Dụng Android

Phát triển ứng dụng Android không chỉ dừng lại ở lý thuyết. Các ứng dụng thực tế đã chứng minh được giá trị của chúng trong cuộc sống hàng ngày. Bài viết này sẽ giới thiệu một số ứng dụng tiêu biểu và kết quả nghiên cứu liên quan.

4.1. Các Ứng Dụng Thành Công Trên Android

Nhiều ứng dụng nổi tiếng như WhatsApp, Instagram và TikTok đã thành công rực rỡ trên nền tảng Android. Phân tích cách mà những ứng dụng này thu hút người dùng sẽ giúp lập trình viên có thêm kinh nghiệm.

4.2. Kết Quả Nghiên Cứu Về Thói Quen Người Dùng

Nghiên cứu cho thấy người dùng Android có xu hướng sử dụng ứng dụng nhiều hơn vào buổi tối. Việc hiểu rõ thói quen này sẽ giúp lập trình viên tối ưu hóa thời gian phát hành ứng dụng.

V. Kết Luận Tương Lai Của Phát Triển Ứng Dụng Android

Phát triển ứng dụng Android đang trên đà phát triển mạnh mẽ. Với sự ra đời của các công nghệ mới như AI và IoT, tương lai của lĩnh vực này hứa hẹn sẽ rất tươi sáng. Bài viết này sẽ tóm tắt những xu hướng và cơ hội trong tương lai.

5.1. Xu Hướng Công Nghệ Mới Trong Phát Triển Ứng Dụng

Công nghệ AI và Machine Learning đang dần trở thành xu hướng trong phát triển ứng dụng. Việc tích hợp các công nghệ này sẽ giúp ứng dụng thông minh hơn và cải thiện trải nghiệm người dùng.

5.2. Cơ Hội Nghề Nghiệp Trong Lĩnh Vực Phát Triển Ứng Dụng

Với nhu cầu ngày càng tăng về ứng dụng di động, cơ hội nghề nghiệp trong lĩnh vực phát triển ứng dụng Android cũng đang mở rộng. Các lập trình viên có kỹ năng sẽ có nhiều cơ hội việc làm hấp dẫn.

15/07/2025
Android application development

Trích đoạn nội dung tài liệu

Android Application Development 5LFN5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH 0HLNH Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo Android Application Development E\5LFN5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH0HLNH &RS\ULJKW‹5LFN5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH0HLNH$OOULJKWVUHVHUYHG 3ULQWHGLQWKH8QLWHG6WDWHVRI$PHULFD 3XEOLVKHGE\2¦5HLOO\0HGLD,QF*UDYHQVWHLQ+LJKZD\1RUWK6HEDVWRSRO&$ 2¦5HLOO\ERRNVPD\EHSXUFKDVHGIRUHGXFDWLRQDOEXVLQHVVRUVDOHVSURPRWLRQDOXVH2QOLQHHGLWLRQV DUHDOVRDYDLODEOHIRUPRVWWLWOHV KWWSP\VDIDULERRNVRQOLQHFRP )RUPRUHLQIRUPDWLRQFRQWDFWRXU FRUSRUDWHLQVWLWXWLRQDOVDOHVGHSDUWPHQW  RUFRUSRUDWH#RUHLOO\FRP Editor: $QG\2UDP Indexer: -RH:L]GD Production Editor: 6XPLWD0XNKHUML Cover Designer: .DUHQ0RQWJRPHU\ Copyeditor: *HQHYLHYHG¦(QWUHPRQW Interior Designer: 'DYLG)XWDWR Proofreader: 6DGD3UHLVFK Illustrator: 5REHUW5RPDQR Printing History: 0D\ )LUVW(GLWLRQ 1XWVKHOO+DQGERRNWKH1XWVKHOO+DQGERRNORJRDQGWKH2¦5HLOO\ORJRDUHUHJLVWHUHGWUDGHPDUNVRI 2¦5HLOO\0HGLD,QF$QGURLG$SSOLFDWLRQ'HYHORSPHQWWKHLPDJHRIDQ(DVWHUQTXROODQGUHODWHGWUDGH GUHVVDUHWUDGHPDUNVRI2¦5HLOO\0HGLD,QF 0DQ\RIWKHGHVLJQDWLRQVXVHGE\PDQXIDFWXUHUVDQGVHOOHUVWRGLVWLQJXLVKWKHLUSURGXFWVDUHFODLPHGDV WUDGHPDUNV:KHUHWKRVHGHVLJQDWLRQVDSSHDULQWKLVERRNDQG2¦5HLOO\0HGLD,QFZDVDZDUHRID WUDGHPDUNFODLPWKHGHVLJQDWLRQVKDYHEHHQSULQWHGLQFDSVRULQLWLDOFDSV :KLOHHYHU\SUHFDXWLRQKDVEHHQWDNHQLQWKHSUHSDUDWLRQRIWKLVERRNWKHSXEOLVKHUDQGDXWKRUVDVVXPH QRUHVSRQVLELOLW\IRUHUURUVRURPLVVLRQVRUIRUGDPDJHVUHVXOWLQJIURPWKHXVHRIWKHLQIRUPDWLRQFRQ WDLQHGKHUHLQ TM 7KLVERRNXVHV5HS.RYHUŒDGXUDEOHDQGIOH[LEOHOD\IODWELQGLQJ ,6%1 >0@  Table of Contents Preface. Development Kit Walk-Through 1. Getting to Know Android. 3 :K\$QGURLG"  7KH2SHQ+DQGVHW$OOLDQFH  7KH$QGURLG([HFXWLRQ(QYLURQPHQW  &RPSRQHQWVRIDQ$QGURLG$SSOLFDWLRQ  $QGURLG$FWLYLW\/LIHF\FOH  $QGURLG6HUYLFH/LIHF\FOH  +RZ7KLV%RRN)LWV7RJHWKHU  2.

Setting Up Your Android Development Environment. 13 6HWWLQJ8S<RXU'HYHORSPHQW(QYLURQPHQW  &UHDWLQJDQ$QGURLG'HYHORSPHQW(QYLURQPHQW  +HOOR$QGURLG  :KHUH:H¦UH*RLQJ  6WDUWLQJD1HZ$QGURLG$SSOLFDWLRQ+HOOR:RUOG  :ULWLQJ+HOOR:RUOG  5XQQLQJ+HOOR:RUOG  3. Using the Android Development Environment for Real Applications. 27 0LFUR-REV7KLV%RRN¦V0DLQ6DPSOH$SSOLFDWLRQ  $QGURLGDQG6RFLDO1HWZRUNLQJ  'RZQORDGLQJWKH0-$QGURLG&RGH  $%ULHI7RXURIWKH0-$QGURLG&RGH  7KH3URMHFW5RRW)ROGHU 0-$QGURLG  7KH6RXUFH)ROGHU VUF  7KH5HVRXUFH)ROGHU UHV  )LUVW6WHSV%XLOGLQJDQG5XQQLQJWKH0LFUR-REV$SSOLFDWLRQ  iii $9HU\6KRUW7RXURIWKH$QGURLG6'.(FOLSVH,'(  /RDGLQJDQG6WDUWLQJWKH$SSOLFDWLRQ  'LJJLQJD/LWWOH'HHSHU:KDW&DQ*R:URQJ"  5XQQLQJDQ$SSOLFDWLRQRQWKH70RELOH3KRQH  6XPPDU\  4.

Under the Covers: Startup Code and Resources in the MJAndroid Application. 43 ,QLWLDOL]DWLRQ3DUDPHWHUVLQ$QGURLG0DQLIHVW[PO  ,QLWLDOL]DWLRQLQ0LFUR-REVMDYD  0RUH,QLWLDOL]DWLRQRI0LFUR-REVMDYD  6XPPDU\  5. Debugging Android Applications. 57 7KH7RROV  (FOLSVH-DYD(GLWRU  -DYD(UURUV  7KH'HEXJJHU  /RJFDW  $QGURLG'HEXJ%ULGJH DGE  ''06'DOYLN'HEXJ0RQLWRU6HUYLFH  7UDFHYLHZ  6XPPDU\  6.

The ApiDemos Application. 81 $SSOLFDWLRQ6HWXSLQWKH0DQLIHVW)LOH  )LQGLQJWKH6RXUFHWRDQ,QWHUHVWLQJ([DPSOH  &XVWRP7LWOH'HPR  /LQNLI\'HPR  $GGLQJ<RXU2ZQ([DPSOHVWR$SL'HPRV  7. Signing and Publishing Your Application. 87 7HVW<RXU$SSOLFDWLRQ  $WWDFKDQ(QG8VHU/LFHQVH$JUHHPHQW,I'HVLUHG  &UHDWHDQG$WWDFKDQ,FRQDQG/DEHO  &OHDQ8SIRU5HOHDVH  9HUVLRQ<RXU$SSOLFDWLRQ  2EWDLQLQJD6LJQLQJ&HUWLILFDWHDQG$3,.H\  *HWWLQJD6LJQLQJ&HUWLILFDWHIRUDQ$SSOLFDWLRQ<RX$UH*RLQJWR6KLS  *HWWLQJD6LJQLQJ&HUWLILFDWH:KLOH'HEXJJLQJ  6LJQLQJ<RXU$SSOLFDWLRQ  5HWHVWLQJ<RXU$SSOLFDWLRQ  3XEOLVKLQJRQ$QGURLG0DUNHW  6LJQLQJ8S$VDQ$QGURLG'HYHORSHU  iv | Table of Contents 8SORDGLQJ<RXU$SSOLFDWLRQ  Part II.

Persistent Data Storage: SQLite Databases and Content Providers. 101 'DWDEDVHV  %DVLF6WUXFWXUHRIWKH0LFUR-REV'DWDEDVH&ODVV  5HDGLQJ'DWDIURPWKH'DWDEDVH  0RGLI\LQJWKH'DWDEDVH  &RQWHQW3URYLGHUV  ,QWURGXFLQJ1RWH3DG  &RQWHQW3URYLGHUV  &RQVXPLQJD&RQWHQW3URYLGHU  9. Location and Mapping. 137 /RFDWLRQ%DVHG6HUYLFHV  0DSSLQJ  7KH*RRJOH0DSV$FWLYLW\  7KH0DS9LHZDQG0DS$FWLYLW\  :RUNLQJZLWK0DS9LHZV  0DS9LHZDQG0\/RFDWLRQ2YHUOD\,QLWLDOL]DWLRQ  3DXVLQJDQG5HVXPLQJD0DS$FWLYLW\  &RQWUROOLQJWKH0DSZLWK0HQX%XWWRQV  &RQWUROOLQJWKH0DSZLWKWKH.H\3DG  /RFDWLRQ:LWKRXW0DSV  7KH0DQLIHVWDQG/D\RXW)LOHV  &RQQHFWLQJWRD/RFDWLRQ3URYLGHUDQG*HWWLQJ/RFDWLRQ8SGDWHV  8SGDWLQJWKH(PXODWHG/RFDWLRQ  10.

157 $QGURLG*8,$UFKLWHFWXUH  7KH0RGHO  7KH9LHZ  7KH&RQWUROOHU  3XWWLQJ,W7RJHWKHU  $VVHPEOLQJD*UDSKLFDO,QWHUIDFH  :LULQJ8SWKH&RQWUROOHU  /LVWHQLQJWRWKH0RGHO  /LVWHQLQJIRU7RXFK(YHQWV  /LVWHQLQJIRU.H\(YHQWV  $OWHUQDWLYH:D\VWR+DQGOH(YHQWV  $GYDQFHG:LULQJ)RFXVDQG7KUHDGLQJ  Table of Contents | v 7KH0HQX  11. 187 $QGURLG9LHZV  7H[W9LHZDQG(GLW7H[W  %XWWRQDQG,PDJH%XWWRQ  $GDSWHUVDQG$GDSWHU9LHZV  &KHFN%R[HV5DGLR%XWWRQVDQG6SLQQHUV  9LHZ*URXSV  *DOOHU\DQG*ULG9LHZ  /LVW9LHZDQG/LVW$FWLYLW\  6FUROO9LHZ  7DE+RVW  /D\RXWV  )UDPH/D\RXW  /LQHDU/D\RXW  7DEOH/D\RXW  $EVROXWH/D\RXW  5HODWLYH/D\RXW  12. Drawing 2D and 3D Graphics. 221 5ROOLQJ<RXU2ZQ:LGJHWV  /D\RXW  &DQYDV'UDZLQJ  'UDZDEOHV  %LWPDSV  %OLQJ  6KDGRZV*UDGLHQWVDQG)LOWHUV  $QLPDWLRQ  2SHQ*/*UDSKLFV  13.

Inter-Process Communication. 257 ,QWHQWV6LPSOH/RZ2YHUKHDG,3&  ,QWHQW2EMHFWV8VHGLQ,QWHU3URFHVV&RPPXQLFDWLRQ  $FWLYLW\2EMHFWVDQG1DYLJDWLQJWKH8VHU,QWHUIDFH+LHUDUFK\  ([DPSOH$Q,QWHQWWR3LFN+RZ:H6D\£+HOOR:RUOG¤  *HWWLQJD5HVXOWYLD,QWHU3URFHVV&RPPXQLFDWLRQ  5HPRWH0HWKRGVDQG$,'/  $QGURLG,QWHUIDFH'HILQLWLRQ/DQJXDJH  &ODVVHV8QGHUO\LQJ$,'/*HQHUDWHG,QWHUIDFHV  3XEOLVKLQJDQ,QWHUIDFH  $QGURLG,3&&RPSDUHGZLWK-DYD1DWLYH,QWHUIDFH -1,  :KDW%LQGHU'RHVQ¦W'R  vi | Table of Contents %LQGHUDQG/LQX[  14. Simple Phone Calls. 277 4XLFNDQG(DV\3KRQH&DOOV  &UHDWLQJDQ([DPSOH$SSOLFDWLRQWR5XQWKHFDOO0HWKRG  (PEHGGLQJWKH&RGH6QLSSHWLQD6LPSOH$SSOLFDWLRQ  ([SORULQJWKH3KRQH&RGH7KURXJKWKH'HEXJJHU  &UHDWLQJDQ,QVWDQFHRIDQ,QWHQW  $GGLQJ'DWDWRDQ,QVWDQFHRIDQ,QWHQW  ,QLWLDWLQJD3KRQH&DOO  ([FHSWLRQ+DQGOLQJ  $QGURLG$SSOLFDWLRQ/HYHO0RGXODULW\DQG7HOHSKRQ\  15.

Telephony State Information and Android Telephony Classes. 287 2SHUDWLRQV2IIHUHGE\WKHDQGURLGWHOHSKRQ\3DFNDJH  3DFNDJH6XPPDU\  /LPLWDWLRQVRQ:KDW$SSOLFDWLRQV&DQ'RZLWKWKH3KRQH  ([DPSOH'HWHUPLQLQJWKH6WDWHRID&DOO  $QGURLG7HOHSKRQ\,QWHUQDOV  ,QWHU3URFHVV&RPPXQLFDWLRQDQG$,'/LQWKH DQGURLGLQWHUQDOWHOHSKRQ\3DFNDJH  7KHDQGURLGLQWHUQDOWHOHSKRQ\3DFNDJH  7KHDQGURLGLQWHUQDOWHOHSKRQ\JVP3DFNDJH  ([SORULQJ$QGURLG7HOHSKRQ\,QWHUQDOV  $QGURLGDQG9R,3  Appendix: Wireless Protocols. 309 Table of Contents | vii Preface :KHQ*RRJOHDQQRXQFHGWKHGHYHORSPHQWRI$QGURLGWKHILHOGRIPRELOHSODWIRUPV ZDVDOUHDG\ZHOOHVWDEOLVKHG(YHQLQWKHQDUURZHUFDWHJRU\RIRSHQVRXUFHSODWIRUPV DQXPEHURIYLDEOHDOWHUQDWLYHVZHUHEHLQJSXVKHGE\SURSRQHQWV<HW$QGURLGKDV VWLPXODWHGQRWRQO\ZLGHVSUHDGWHFKQLFDOLQWHUHVWEXWUDPSDQWVSHFXODWLRQDERXWLWV SRWHQWLDOWRFRPSOHWHO\WUDQVIRUPWKHZRUOGRIWKHSHUVRQDOGHYLFH,QVWHDGRIDFRQ YHQLHQWSURSWRVXSSRUWDVHWRIIDPLOLDUIXQFWLRQVVXFKDVSKRQHFDOOVHPDLODQG UHVWDXUDQWORRNXSVWKHHOHFWURQLFGHYLFHFRXOGEHFRPHDQRSHQHQGHGZLQGRZLQWR WKHZKROHZRUOG¢FRXOGEHFRPHLQVKRUWDQ\WKLQJWKDWWKHXVHUDQGWKHGHYHORSHU FRXOGWKLQNWRPDNHLW +RZPXFKRIWKHFRJHQWDQDO\VLVDQGIHUYLGK\SHZLOOFRPHWRSDVVFDQEHGLVFXVVHG HOVHZKHUHWKLVERRNLVIRUWKRVHZKRZDQWWRJHWWRNQRZWKHSURJUDPPLQJHQYLURQ PHQWIRU$QGURLGDQGOHDUQZKDWWKH\WKHPVHOYHVFDQGRWRPDNHDGLIIHUHQFH:HKDYH VSHQWPDQ\JUXHOLQJPRQWKVLQYHVWLJDWLQJWKHVRXUFHFRGHRYHUPXOWLSOHUHOHDVHVDQG WU\LQJRXWWKHIXQFWLRQVRIWKHOLEUDU\DQGGHYHORSPHQWNLW:HKDYHEHHQZRUNLQJKDUG WRXQFRYHUWKHWUXH$QGURLGJRLQJEH\RQGDQ\GRFXPHQWDWLRQZHFRXOGILQGRQOLQH RULQSULQW 7KLVERRNUHDGFDUHIXOO\FDQHQDEOHDQ\-DYDSURJUDPPHUWRGHYHORSXVHIXODQGUREXVW DSSOLFDWLRQVIRU$QGURLG,WDOVRWDNHV\RXLQWRWKHLQWHUQDOVLQVRPHSODFHVVR\RX NQRZKRZ$QGURLGVXSSRUWVZKDW\RX¦UHGRLQJ¢DQGVR\RXFDQSOD\DURXQGZLWKLWV RSHQVRXUFHFRGHLI\RXOLNH Audience 7KLVERRNLVLQWHQGHGIRUH[SHULHQFHGVRIWZDUHGHYHORSHUVZKRZDQWWRGHYHORSDS SOLFDWLRQVLQWKH$QGURLGPRELOHHQYLURQPHQW,WDVVXPHV\RXKDYHVRPHH[SHULHQFH ZLWKWKH-DYDSURJUDPPLQJODQJXDJHZLWKXVLQJ-DYDWRLPSOHPHQWXVHULQWHUIDFHV DQGWKDW\RXDUHDWOHDVWIDPLOLDUZLWKWKHWHFKQRORJLHV$QGURLGXVHVVXFKDV;0/ 64/*7DON ;033 2SHQ*/(6DQG+773 ix How This Book Is Organized 7KLVERRNLVRUJDQL]HGDURXQGWKHFRUHH[DPSOHSURJUDPLQWURGXFHGLQ&KDSWHU /DWHUFKDSWHUVLOOXVWUDWHGHYHORSPHQWWHFKQLTXHVE\DGGLQJWRWKHH[DPSOHWKURXJK LPSOHPHQWLQJPRGXODUH[WHQVLRQVZKHUHWKLVLVIHDVLEOH6RPHFKDSWHUV DQGWKH$S SHQGL[ FRYHUPRUHDGYDQFHGWRSLFVWKDWDUHQRWUHTXLUHGIRUPDQ\DSSOLFDWLRQV 3DUW,'HYHORSPHQW.LW:DON7KURXJKJHWV\RXVWDUWHGZLWKWKHEDVLFV\RX¦OOQHHGWR ZULWHDSSOLFDWLRQV &KDSWHU*HWWLQJWR.QRZ$QGURLGH[SODLQV$QGURLG¦VSODFHLQWKHPDUNHWDQGLWV EDVLFDUFKLWHFWXUH &KDSWHU6HWWLQJ8S<RXU$QGURLG'HYHORSPHQW(QYLURQPHQWWHOOV\RXKRZWRGRZQ ORDGWKHVRIWZDUH\RXQHHGLQFOXGLQJ(FOLSVHDQGWKH$QGURLGSOXJLQDQGKRZWRJHW VWDUWHGSURJUDPPLQJ &KDSWHU8VLQJWKH$QGURLG'HYHORSPHQW(QYLURQPHQWIRU5HDO$SSOLFDWLRQVGHVFULEHV WKHILOHVWKDWPDNHXSDW\SLFDO$QGURLGSURJUDP &KDSWHU8QGHUWKH&RYHUV6WDUWXS&RGHDQG5HVRXUFHVLQWKH0-$QGURLG$SSOLFD WLRQORRNVDWWKHIXQGDPHQWDO-DYDFRGHDQG;0/UHVRXUFHVWKDWHYHU\DSSOLFDWLRQ QHHGV &KDSWHU'HEXJJLQJ$QGURLG$SSOLFDWLRQVLQWURGXFHVDQXPEHURIWRROVIRUGHEXJJLQJ DQGSHUIRUPDQFHLQFOXGLQJ(FOLSVHORJVWKH$QGURLG'HEXJ%ULGJH adb ''06DQG 7UDFHYLHZ &KDSWHU7KH$SL'HPRV$SSOLFDWLRQRIIHUVDKLJKOHYHOWRXURIWKHVDPSOH$QGURLG FRGHLQFOXGHGLQWKHWRRONLWZLWKWLSVIRUH[SORULQJLW\RXUVHOI &KDSWHU6LJQLQJDQG3XEOLVKLQJ<RXU$SSOLFDWLRQVKRZV\RXKRZWRPDNH\RXUDS SOLFDWLRQUHDG\IRUSXEOLFXVH 3DUW ,, 3URJUDPPLQJ 7RSLFV H[SORUHV LQ GHSWK WKH PDMRU OLEUDULHV \RX¦OO QHHG DQG VKRZV\RXKRZWRXVHWKHPHIIHFWLYHO\ &KDSWHU3HUVLVWHQW'DWD6WRUDJH64/LWH'DWDEDVHVDQG&RQWHQW3URYLGHUVVKRZV KRZWRXVHWKHWZRPRVWSRZHUIXOPHDQVLQ$QGURLGIRUVWRULQJDQGVHUYLQJGDWD &KDSWHU/RFDWLRQDQG0DSSLQJVKRZVKRZWRGHWHUPLQHDQGGLVSOD\WKHXVHU¦VOR FDWLRQDQGKRZWRXVH*RRJOH0DSV &KDSWHU%XLOGLQJD9LHZLQWURGXFHVJUDSKLFDOSURJUDPPLQJRQ$QGURLGE\H[ SODLQLQJKRZWRFUHDWHDQGPDQLSXODWHZLQGRZVDQGYLHZV &KDSWHU$:LGJHW%HVWLDU\FRYHUVWKHPRVWSRSXODUDQGXVHIXOJUDSKLFDOLQWHUIDFH HOHPHQWVSURYLGHGE\$QGURLG &KDSWHU'UDZLQJ'DQG'*UDSKLFVVKRZVKRZWROD\RXWJUDSKLFVDQGGHOYHV LQWRGUDZLQJWUDQVIRUPLQJDQGDQLPDWLQJ\RXURZQJUDSKLFV x | Preface &KDSWHU,QWHU3URFHVV&RPPXQLFDWLRQFRYHUV,QWHQWVDQG5HPRWH0HWKRGVZKLFK DOORZ\RXWRDFFHVVWKHIXQFWLRQDOLW\RIRWKHUDSSOLFDWLRQV &KDSWHU6LPSOH3KRQH&DOOVVKRZVKRZWRGLDODQXPEHUIURPDQDSSOLFDWLRQDQG H[SODLQVKRZ$QGURLGFDUULHVRXWWKHUHTXHVW &KDSWHU7HOHSKRQ\6WDWH,QIRUPDWLRQDQG$QGURLG7HOHSKRQ\&ODVVHVVKRZVKRZ WRJHWLQIRUPDWLRQDERXWWHOHSKRQ\VHUYLFHDQGSKRQHFDOOVDQGRIIHUVDWRXURIWHO HSKRQ\LQWHUQDOV $SSHQGL[:LUHOHVV3URWRFROVRIIHUVVRPHEDFNJURXQGDQGKLVWRU\RQZLUHOHVVVHUYLFHV Conventions Used in This Book 7KHIROORZLQJW\SRJUDSKLFDOFRQYHQWLRQVDUHXVHGLQWKLVERRN ,WDOLF ,QGLFDWHVQHZWHUPV85/VHPDLODGGUHVVHVILOHQDPHVDQGILOHH[WHQVLRQV Constant width 8VHGIRUSURJUDPOLVWLQJVDVZHOODVZLWKLQSDUDJUDSKVWRUHIHUWRSURJUDPHOHPHQWV VXFKDVYDULDEOHRUIXQFWLRQQDPHVGDWDEDVHVGDWDW\SHVHQYLURQPHQWYDULDEOHV VWDWHPHQWVDQGNH\ZRUGV Constant width bold 6KRZVFRPPDQGVRURWKHUWH[WWKDWVKRXOGEHW\SHGOLWHUDOO\E\WKHXVHU Constant width italic 6KRZVWH[WWKDWVKRXOGEHUHSODFHGZLWKXVHUVXSSOLHGYDOXHVRUE\YDOXHVGHWHU PLQHGE\FRQWH[W 7KLVLFRQVLJQLILHVDWLSVXJJHVWLRQRUJHQHUDOQRWH 7KLVLFRQLQGLFDWHVDZDUQLQJRUFDXWLRQ Using Code Examples 7KLVERRNLVKHUHWRKHOS\RXJHW\RXUMREGRQH,QJHQHUDO\RXPD\XVHWKHFRGHLQ WKLVERRNLQ\RXUSURJUDPVDQGGRFXPHQWDWLRQ<RXGRQRWQHHGWRFRQWDFWXVIRU SHUPLVVLRQXQOHVV\RX¦UHUHSURGXFLQJDVLJQLILFDQWSRUWLRQRIWKHFRGH)RUH[DPSOH ZULWLQJDSURJUDPWKDWXVHVVHYHUDOFKXQNVRIFRGHIURPWKLVERRNGRHVQRWUHTXLUH SHUPLVVLRQ6HOOLQJRUGLVWULEXWLQJD&'520RIH[DPSOHVIURP2¦5HLOO\ERRNVGRHV Preface | xi UHTXLUH SHUPLVVLRQ $QVZHULQJ D TXHVWLRQE\ FLWLQJ WKLV ERRN DQGTXRWLQJ H[DPSOH FRGHGRHVQRWUHTXLUHSHUPLVVLRQ,QFRUSRUDWLQJDVLJQLILFDQWDPRXQWRIH[DPSOHFRGH IURPWKLVERRNLQWR\RXUSURGXFW¦VGRFXPHQWDWLRQGRHVUHTXLUHSHUPLVVLRQ :HDSSUHFLDWHEXWGRQRWUHTXLUHDWWULEXWLRQ$QDWWULEXWLRQXVXDOO\LQFOXGHVWKHWLWOH DXWKRUSXEOLVKHUDQG,6%1)RUH[DPSOH£$QGURLG$SSOLFDWLRQ'HYHORSPHQWE\5LFN 5RJHUV -RKQ /RPEDUGR =LJXUG 0HGQLHNV DQG %ODNH 0HLNH &RS\ULJKW  5LFN 5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH0HLNH¤ ,I\RXIHHO\RXUXVHRIFRGHH[DPSOHVIDOOVRXWVLGHIDLUXVHRUWKHSHUPLVVLRQJLYHQKHUH IHHOIUHHWRFRQWDFWXVDWSHUPLVVLRQV#RUHLOO\FRP Safari® Books Online :KHQ\RXVHHD6DIDULŠ%RRNV2QOLQHLFRQRQWKHFRYHURI\RXUIDYRULWH WHFKQRORJ\ ERRN WKDW PHDQV WKH ERRN LV DYDLODEOH RQOLQH WKURXJK WKH 2¦5HLOO\1HWZRUN6DIDUL%RRNVKHOI 6DIDULRIIHUVDVROXWLRQWKDW¦VEHWWHUWKDQHERRNV,W¦VDYLUWXDOOLEUDU\WKDWOHWV\RXHDVLO\ VHDUFKWKRXVDQGVRIWRSWHFKERRNVFXWDQGSDVWHFRGHVDPSOHVGRZQORDGFKDSWHUV DQGILQGTXLFNDQVZHUVZKHQ\RXQHHGWKHPRVWDFFXUDWHFXUUHQWLQIRUPDWLRQ7U\LW IRUIUHHDWKWWSP\VDIDULERRNVRQOLQHFRP How to Contact Us 3OHDVHDGGUHVVFRPPHQWVDQGTXHVWLRQVFRQFHUQLQJWKLVERRNWRWKHSXEOLVKHU 2¦5HLOO\0HGLD,QF *UDYHQVWHLQ+LJKZD\1RUWK 6HEDVWRSRO&$  LQWKH8QLWHG6WDWHVRU&DQDGD  LQWHUQDWLRQDORUORFDO  ID[ :HKDYHDZHESDJHIRUWKLVERRNZKHUHZHOLVWHUUDWDH[DPSOHVDQGDQ\DGGLWLRQDO LQIRUPDWLRQ<RXFDQDFFHVVWKLVSDJHDW KWWSZZZRUHLOO\FRPFDWDORJ 7RFRPPHQWRUDVNWHFKQLFDOTXHVWLRQVDERXWWKLVERRNVHQGHPDLOWR ERRNTXHVWLRQV#RUHLOO\FRP )RU PRUH LQIRUPDWLRQ DERXW RXU ERRNV FRQIHUHQFHV 5HVRXUFH &HQWHUV DQG WKH 2¦5HLOO\1HWZRUNVHHRXUZHEVLWHDW KWWSZZZRUHLOO\FRP xii | Preface Acknowledgments :H¦GOLNHWRWKDQN%LOO'LPPLFN%UDG2¦+HDUQHDQG+\FHO7D\ORUIRUWKHLUWKRXJKWIXO DQGFDUHIXOUHYLHZVRIWKLVERRNXQGHUDKLJKSUHVVXUHWLPHOLQH Rick Rogers /LNHDQ\WKLQJZRUWKGRLQJ,VXSSRVHWKLVERRNHQGHGXSWDNLQJPRUHWLPHDQGHIIRUW WKDQDQ\RIXVSODQQHGLQWKHEHJLQQLQJ,¦GOLNHWRWKDQNP\FRDXWKRUVDQGWKHJUHDW IRONVDW2¦5HLOO\IRUVWLFNLQJZLWKLWDQGEULQJLQJWKHZRUNWRIUXLWLRQWKURXJKDOOWKH WZLVWVDQGWXUQV,¦GDOVROLNHWRWKDQNP\IDPLO\DQGIULHQGVZKRHQFRXUDJHGPHDOO WKURXJKWKHSURFHVVDQGOHQWDQHDUZKHQ,MXVWQHHGHGWRWDON0RVWHVSHFLDOO\WKRXJK ,ZDQWWRGHGLFDWHWKHERRNWRP\ZLIH6XVLHZKRVHSDWLHQFHNQRZVQRERXQGVDQG ZKRVHDPD]LQJDWWLWXGHWRZDUGOLIHLVDQHQGXULQJLQVSLUDWLRQIRUPHQRPDWWHUZKDW ,¦PGRLQJ John Lombardo ,ZRXOGOLNHWRWKDQNP\ZRQGHUIXOZLIH'HQDZKRNHSWOLIHIURPLQWHUIHULQJZKHQ, FORVHGWKHRIILFHGRRUWRZRUNRQWKHERRN,ZDQWWRGHGLFDWHWKLVERRNWRP\PRWKHU 0DUJXHULWH0HJDULVZKRGLHGVXGGHQO\LQ,JDYHKHUDFRS\RIP\ILUVWERRN (PEHGGHG/LQX[ 1HZ5LGHUV EDFNLQ6KHFUDFNHGLWRSHQWRDSDJHZLWKVRPH DVVHPEO\FRGHORRNHGDWLWIRUDERXWVHFRQGVFORVHGLWDQGVDLG£7KDW¦VQLFHGHDU¤ :HKDGDJRRGODXJKRYHUWKDW,¦GDOVROLNHWRWKDQNDOOWKHZRQGHUIXOSHRSOHDW2¦5HLOO\ IRU DOO WKHLU KDUG ZRUN ,¦G HVSHFLDOO\ OLNH WR WKDQN $QG\ 2UDP ZKR FRGGOHG DQG SURGGHGXVLQMXVWWKHULJKWGRVHVWRNHHSWKHERRNKXPPLQJDORQJDWDJRRGFOLS Zigurd Mednieks 7KDQNVWR7HUU\0DLMDDQG&KDUOHVIRUSXWWLQJXSZLWKP\VFKHGXOHZKLOH,ZDVZULW LQJDQGWR$QG\2UDPDQGP\FRDXWKRUVIRUOHWWLQJPHSDUWLFLSDWHDQGKRSHIXOO\ FRQWULEXWH Blake Meike ,DPYHU\JUDWHIXOWRKDYHEHHQLQYLWHGWRZRUNZLWKVXFKDQDPD]LQJJURXSRISHRSOH 7KDQNVWR=LJXUGIRUVXJJHVWLQJLW$QG\2UDPIRUSUDFWLFDOO\KROGLQJP\SHQDQG 5LFN-RKQDQG,VDEHO.XQNOHIRUPDNLQJWKRVH7KXUVGD\PRUQLQJFDOOVDSOHDVXUH 7KDQNVWR0LNH0RUWRQIRUDFWXDOO\UHDGLQJERWKWKHWH[WDQGWKHFRGH7KRXJKLWPD\ VHHPREYLRXVWKDQNVWRWKH*RRJOH$QGURLGGHYHORSHUV1RWEDGJX\V1RWEDGDWDOO )LQDOO\ORYHDQGWKDQNVWRP\ZLIH&DWKHULQHZKRQHYHUOHWPHVHHDQ\GLVDSSRLQW PHQWZKHQ,VDLG\HWDJDLQ£&DQ¦W*RWWDZRUNRQWKHERRNWKLVZHHNHQG¤<HVEDEH OHW¦VGRWKHERRNFDVHQRZ Preface | xiii PART I Development Kit Walk-Through 7KLVERRNJHWV\RXVWDUWHGZLWK$QGURLG:H¦OOH[SODLQZKDW¦VVSHFLDODERXW$QGURLG¦V IHDWXUHVDQGKRZLWVDUFKLWHFWXUHDFKLHYHVLWVJRDOVDQGVKRZ\RXKRZWRJHWVWDUWHG SURJUDPPLQJ<RX¦OOOHDUQWKHWRROVWKDWOHW\RXZULWHSURJUDPVXVLQJ(FOLSVHUXQWKHP RQ WKH $QGURLG HPXODWRU DQG FDUU\ RXW GHEXJJLQJ WUDFLQJ DQG SURILOLQJ 7KH ODVW FKDSWHULQ3DUWVKRZV\RXKRZWRVLJQ\RXUSURJUDPIRUSXEOLFGLVWULEXWLRQ CHAPTER 1 Getting to Know Android Why Android? *RRJOH¦V$QGURLGPRELOHSKRQHVRIWZDUHSODWIRUPPD\EHWKHQH[WELJRSSRUWXQLW\IRU DSSOLFDWLRQVRIWZDUHGHYHORSHUV *RRJOHDQQRXQFHGWKH2SHQ+DQGVHW$OOLDQFHDQGWKH$QGURLGSODWIRUPLQ1RYHPEHU RIUHOHDVLQJWKHILUVWEHWDYHUVLRQRIWKH$QGURLG6RIWZDUH'HYHORSPHQW. DWWKHVDPHWLPH:LWKLQDPDWWHURIDIHZPRQWKVRYHUPLOOLRQSHRSOHKDGGRZQ ORDGHG YHUVLRQV RI WKH 6'. IURP *RRJOH¦V ZHEVLWH ,Q WKH 8QLWHG 6WDWHV 70RELOH DQQRXQFHGWKH*$QGURLGPRELOHSKRQHLQ2FWREHURIDQGHVWLPDWHVDUHWKDW VHYHUDOKXQGUHGWKRXVDQG*VZHUHVROGEHIRUHWKHHQGRIWKDW\HDU7KHUHDUHDOUHDG\ VHYHUDOFRPSHWLQJPRELOHSKRQHVRIWZDUHVWDFNVLQWKHPDUNHWVRZK\LVWKHUHVXFK LQWHUHVWLQ$QGURLG" $QGURLGKDVWKHSRWHQWLDOIRUUHPRYLQJWKHEDUULHUVWRVXFFHVVLQWKHGHYHORSPHQWDQG VDOHRIDQHZJHQHUDWLRQRIPRELOHSKRQHDSSOLFDWLRQVRIWZDUH-XVWDVWKHWKHVWDQG DUGL]HG3&DQG0DFLQWRVKSODWIRUPVFUHDWHGPDUNHWVIRUGHVNWRSDQGVHUYHUVRIWZDUH $QGURLGE\SURYLGLQJDVWDQGDUGPRELOHSKRQHDSSOLFDWLRQHQYLURQPHQWZLOOFUHDWH DPDUNHWIRUPRELOHDSSOLFDWLRQV¢DQGWKHRSSRUWXQLW\IRUDSSOLFDWLRQVGHYHORSHUVWR SURILWIURPWKRVHDSSOLFDWLRQV :K\KDVQ¦WLWEHHQSURILWDEOHWRGHYHORSPRELOHDSSOLFDWLRQVIRUVPDUWSKRQHVXQWLO QRZ"$QGZKDWDUHWKHSUREOHPVWKDW$QGURLGDOOHYLDWHV" )UDJPHQWDWLRQ $ERXW  PLOOLRQ VPDUWSKRQHV ZHUH VROG LQ  VR WKHUH DUH D ORW RI SKRQHV DYDLODEOHWRUXQDSSOLFDWLRQVEXWHDFKEUDQGKDVDGLIIHUHQWDSSOLFDWLRQHQYLURQ PHQW7KLVLVSDUWLFXODUO\WUXHRI/LQX[EDVHGSKRQHVZKHUHHDFKKDQGVHWYHQGRU KDVKDGWRDVVHPEOHVFRUHVRISLHFHVRIWKLUGSDUW\VRIWZDUHWRFUHDWHDYLDEOHPRELOH SKRQHSODWIRUP7KHUHLVQRFKDQFHWKDWWKH\ZRXOGDOOFKRRVHWKHVDPHFRPSR QHQWVWREXLOGDPRELOHVPDUWSKRQH 3 -DYDZDVVXSSRVHGWRKHOSWKLVVLWXDWLRQZLWK-0(DQGWKHZLUHOHVV-DYDUHFRP PHQGDWLRQV &'& &/'& 0,'3 -7:, 06$ HWF  SURYLGLQJ D FRPPRQ DSSOLFDWLRQVHQYLURQPHQWDFURVVKDQGVHWV8QIRUWXQDWHO\DOPRVWHYHU\KDQGVHW WKDWVXSSRUWV-0(DOVRVXSSRUWYHQGRUSURSULHWDU\H[WHQVLRQVWKDWOLPLWWKHSRUW DELOLW\RIDSSOLFDWLRQV 3URSULHWDU\VRIWZDUHVWDFNV 0RVWH[LVWLQJVPDUWSKRQHVXVHSURSULHWDU\UHODWLYHO\FORVHGVRIWZDUHVWDFNVVXFK DV1RNLD¦V6HULHVZLWKWKH6\PELDQRSHUDWLQJV\VWHPRU0LFURVRIW¦V:LQGRZV 0RELOH0RGLILFDWLRQVWRWKHVHVWDFNV DGGLQJDGULYHUIRUH[DPSOH KDYHWREH GRQHHLWKHUE\WKHVWDFNRZQHURUE\WKHKDQGVHWPDQXIDFWXUHU7KHVWDFNVDUHQRW RSHQVRXUFHVRFKDQJLQJDQ\WKLQJLQWKHVWDFNLVGLIILFXOWDWEHVW0RVW/LQX[ EDVHGSKRQHVWRGDWHKDYHDQRSHQVRXUFHNHUQHO DVUHTXLUHGE\WKH*3/OLFHQVH  EXWNHHSRWKHUGHWDLOVRIWKHVRIWZDUHVWDFN DSSOLFDWLRQIUDPHZRUNPXOWLPHGLD IUDPHZRUNDSSOLFDWLRQV SURSULHWDU\ &ORVHGQHWZRUNV 6HULHVDQG:LQGRZV0RELOHGRDOORZWKHDGGLWLRQRIWKLUGSDUW\DSSOLFDWLRQV EXWPRELOHRSHUDWRUVRIWHQORFNWKHKDQGVHWVVRDSSOLFDWLRQVFDQQRWEHDGGHG7KH RSHUDWRUVFODLPWKLVLVQHHGHGWRSUHVHUYHWKHLQWHJULW\RIWKHLUPRELOHQHWZRUNV PDNLQJVXUHWKDWYLUXVHVDQGVSDPDUHQRWLQDGYHUWHQWO\LQVWDOOHGE\HQGXVHUV,W DOVRVXLWVWKHRSHUDWRU¦VEXVLQHVVPRGHOEHFDXVHWKHLUPRELOHSKRQHFXVWRPHUV DUHFRQILQHGWRWKHRSHUDWRUV¦£ZDOOHGJDUGHQ¤RIDSSOLFDWLRQVERWKRQWKHSKRQH DQGLQWKHQHWZRUN$QGURLGLQFOXGHVDQRSHQFDWDORJRIDSSOLFDWLRQV$QGURLG 0DUNHWWKDWXVHUVFDQGRZQORDGRYHUWKHDLUWRWKHLU$QGURLGSKRQHV,WDOVRDOORZV GLUHFWORDGLQJRIDSSOLFDWLRQVYLD86%FRQQHFWLRQ $QGURLGJLYHVGHYHORSHUVDZD\WRGHYHORSXQLTXHFUHDWLYHDSSOLFDWLRQVDQGJHWWKRVH DSSOLFDWLRQV LQ WKH KDQGV RI FXVWRPHUV +XQGUHGV RI WKRXVDQGV RI $QGURLG PRELOH SKRQHXVHUVDUHDOUHDG\WKHUHORRNLQJIRUWKHQH[WFOHYHURUXVHIXODSSOLFDWLRQDQGWKDW DSSOLFDWLRQFRXOGEH\RXUV The Open Handset Alliance *RRJOHDQGRWKHUFRPSDQLHVDQQRXQFHGWKHIRUPDWLRQRIWKH2SHQ+DQGVHW$OOL DQFHRQ1RYHPEHU$FFRUGLQJWRWKHMRLQWSUHVVUHOHDVHIURPWKDWGD\ 7KLVDOOLDQFHVKDUHVDFRPPRQJRDORIIRVWHULQJLQQRYDWLRQRQPRELOHGHYLFHVDQGJLYLQJ FRQVXPHUVDIDUEHWWHUXVHUH[SHULHQFHWKDQPXFKRIZKDWLVDYDLODEOHRQWRGD\¦VPRELOH SODWIRUPV%\SURYLGLQJGHYHORSHUVDQHZOHYHORIRSHQQHVVWKDWHQDEOHVWKHPWRZRUN PRUH FROODERUDWLYHO\ $QGURLG ZLOO DFFHOHUDWH WKH SDFH DW ZKLFK QHZ DQG FRPSHOOLQJ PRELOHVHUYLFHVDUHPDGHDYDLODEOHWRFRQVXPHUV )RUXVDVPRELOHDSSOLFDWLRQGHYHORSHUVWKDWPHDQVZHDUHIUHHWRGHYHORSZKDWHYHU FUHDWLYHPRELOHDSSOLFDWLRQVZHFDQWKLQNRIIUHHWRPDUNHWWKHP RUJLYHWKHPDWRXU RSWLRQ WR$QGURLGPRELOHSKRQHRZQHUVDQGIUHHWRSURILWIURPWKDWHIIRUWDQ\ZD\ 4 | Chapter 1:ಗGetting to Know Android ZHFDQ(DFKPHPEHURIWKH2SHQ+DQGVHW$OOLDQFHKDVLWVRZQUHDVRQVIRUSDUWLFL SDWLQJDQGFRQWULEXWLQJLWVLQWHOOHFWXDOSURSHUW\DQGZHDUHIUHHWREHQHILW 7KH 2SHQ +DQGVHW $OOLDQFH LQWHJUDWHV FRQWULEXWHG VRIWZDUH DQG RWKHU LQWHOOHFWXDO SURSHUW\IURPLWVPHPEHUFRPSDQLHVDQGPDNHVLWDYDLODEOHWRGHYHORSHUVWKURXJKWKH RSHQVRXUFHFRPPXQLW\6RIWZDUHLVOLFHQVHGWKURXJKWKH$SDFKH9OLFHQVHZKLFK \RXFDQVHHDWKWWSZZZDSDFKHRUJOLFHQVHV/,&(16(W[W8VHRIWKH$SDFKHOL FHQVHLVFULWLFDOEHFDXVHLWDOORZVKDQGVHWPDQXIDFWXUHUVWRWDNH$QGURLGFRGHPRGLI\ LWDVQHFHVVDU\DQGWKHQHLWKHUNHHSLWSURSULHWDU\RUUHOHDVHLWEDFNWRWKHRSHQVRXUFH FRPPXQLW\DWWKHLURSWLRQ7KHRULJLQDO$OOLDQFHPHPEHUVLQFOXGHKDQGVHWPDQXIDF WXUHUV +7&/*0RWRUROD6DPVXQJ PRELOHRSHUDWRUV &KLQD0RELOH&RPPXQLFD WLRQV .'', 'R&R0R 6SULQW1H[WHO 70RELOH 7HOHFRP ,WDOLD 7HOHIRQLFD  VHPLFRQGXFWRUFRPSDQLHV $XGLHQFH%URDGFRP,QWHO0DUYHOO19LGLD4XDOFRPP 6L5)6\QDSWLFV VRIWZDUHFRPSDQLHV $VFHQGHUH%D\HVPHUWHF*RRJOH/LYLQJ,PDJH /LYH:LUH1XDQFH3DFNHW9LGHR6N\3RS621L92; DQGFRPPHUFLDOL]DWLRQFRP SDQLHV $SOL[ 1RVHU 7$7 :LQG 5LYHU  7KH $OOLDQFH LQFOXGHV WKH PDMRU SDUWQHUV QHHGHG WR GHOLYHU D SODWIRUP IRU PRELOH SKRQH DSSOLFDWLRQV LQ DOO RI WKH PDMRU JHRJUDSKLHV 7KH $OOLDQFH UHOHDVHV VRIWZDUH WKURXJK *RRJOH¦V GHYHORSHU ZHEVLWH KWWSGHYHORSHU DQGURLGFRP 7KH$QGURLG6'.IRUXVHE\DSSOLFDWLRQVRIWZDUHGHYHORSHUVFDQEH GRZQORDGHGGLUHFWO\IURPWKDWZHEVLWH 7KH$QGURLG3ODWIRUP3RUWLQJ.LWIRUXVHE\ KDQGVHWPDQXIDFWXUHUVZKRZDQWWRSRUWWKH$QGURLGSODWIRUPWRDKDQGVHWGHVLJQLV QRWFRYHUHGLQWKLVERRN The Android Execution Environment $SSOLFDWLRQVLQ$QGURLGDUHDELWGLIIHUHQWIURPZKDW\RXPD\EHXVHGWRLQWKHGHVNWRS DQGVHUYHUHQYLURQPHQWV7KHGLIIHUHQFHVDUHGULYHQE\DIHZNH\FRQFHSWVXQLTXHWR WKHPRELOHSKRQHHQYLURQPHQWDQGXQLTXHWR*RRJOH¦VLQWHQWLRQVIRU$QGURLG$V\RX ZULWHDSSOLFDWLRQVIRUDQ$QGURLGKDQGVHW\RXZLOOXVHWKHVHFRQFHSWVWRJXLGHWKH GHVLJQDQGLPSOHPHQWDWLRQRIWKHDSSOLFDWLRQ /LPLWHGUHVRXUFHV 0RELOH SKRQHV WRGD\ DUH YHU\ SRZHUIXO KDQGKHOG FRPSXWHUV EXW WKH\ DUH VWLOO OLPLWHG7KHIXQGDPHQWDOOLPLWDWLRQRIDPRELOHGHYLFHLVEDWWHU\FDSDFLW\(YHU\ FORFNWLFNRIWKHSURFHVVRUHYHU\UHIUHVKRIPHPRU\HYHU\EDFNOLWSL[HORQWKH XVHU¦VVFUHHQWDNHVHQHUJ\IURPWKHEDWWHU\%DWWHU\VL]HLVOLPLWHGDQGXVHUVGRQ¦W OLNHIUHTXHQWEDWWHU\FKDUJLQJ$VDUHVXOWWKHFRPSXWLQJUHVRXUFHVDUHOLPLWHG¢ FORFNUDWHVDUHLQWKHKXQGUHGVRI0+]PHPRU\LVDWEHVWDIHZJLJDE\WHVGDWD VWRUDJHLVDWEHVWDIHZWHQVRIJLJDE\WHV7KURXJKRXWWKLVERRNZHZLOOWDONDERXW WKHPHFKDQLVPVLQFOXGHGLQ$QGURLGWRRSWLPL]HIRUWKHVHOLPLWHGUHVRXUFHV The Android Execution Environment | 5 0RELOHPDVKXSV ,QWKHGHVNWRS,QWHUQHWZRUOGPDVKXSVPDNHLWYHU\HDV\WRFUHDWHQHZDSSOLFDWLRQV E\UHXVLQJWKHGDWDDQGXVHULQWHUIDFHHOHPHQWVSURYLGHGE\H[LVWLQJDSSOLFDWLRQV *RRJOH0DSVLVDJUHDWH[DPSOH\RXFDQHDVLO\FUHDWHDZHEEDVHGDSSOLFDWLRQWKDW LQFRUSRUDWHVPDSVVDWHOOLWHLPDJHU\DQGWUDIILFXSGDWHVXVLQJMXVWDIHZOLQHVRI -DYD6FULSWRQ\RXURZQZHESDJH$QGURLGH[WHQGVWKDWFRQFHSWWRWKHPRELOH SKRQH,QRWKHUPRELOHHQYLURQPHQWVDSSOLFDWLRQVDUHVHSDUDWHDQGZLWKWKHH[ FHSWLRQRIEURZVHUEDVHGDSSOLFDWLRQV\RXDUHH[SHFWHGWRFRGH\RXUDSSOLFDWLRQV VHSDUDWHO\IURPWKHRWKHUDSSOLFDWLRQVWKDWDUHUXQQLQJRQWKHKDQGVHW,Q$QGURLG \RX FDQ HDVLO\ FUHDWH QHZ DSSOLFDWLRQV WKDW LQFRUSRUDWH H[LVWLQJ DSSOLFDWLRQV &KDSWHUIRFXVHVRQWKHVHPRELOHPDVKXSV ,QWHUFKDQJHDEOHDSSOLFDWLRQV ,QRWKHUPRELOHVRIWZDUHHQYLURQPHQWVDSSOLFDWLRQVDUHFRGHGWRDFFHVVGDWDIURP VSHFLILFGDWDSURYLGHUV,I\RXQHHGWRVHQGDQHPDLOIURPD:LQGRZV0RELOHDS SOLFDWLRQIRUH[DPSOH\RXFRGHH[SOLFLWUHIHUHQFHVWR3RFNHW2XWORRN¦VHPDLOLQ WHUIDFHDQGVHQGWKHHPDLOWKDWZD\%XWZKDWLIWKHXVHUZDQWVWRXVHDQRWKHU HPDLOFOLHQW" $QGURLGLQFRUSRUDWHVDIXQGDPHQWDOPHFKDQLVP ,QWHQWV WKDWLVLQGHSHQGHQWRI VSHFLILFDSSOLFDWLRQLPSOHPHQWDWLRQV,QDQ$QGURLGDSSOLFDWLRQ\RXGRQ¦WVD\\RX ZDQWWRVHQGHPDLOWKURXJKDVSHFLILFDSSOLFDWLRQLQVWHDG\RXVD\\RXZDQWWR VHQG DQ HPDLO WKURXJK ZKDWHYHU DSSOLFDWLRQ LV DYDLODEOH 7KH RSHUDWLQJ V\VWHP WDNHVFDUHRIILJXULQJRXWZKDWDSSOLFDWLRQFDQVHQGHPDLOVVWDUWVWKDWDSSOLFDWLRQ LIQHHGHGDQGFRQQHFWV\RXUUHTXHVWVRWKHHPDLOFDQEHVHQW7KHXVHUFDQVXE VWLWXWHGLIIHUHQWEURZVHUVGLIIHUHQW03SOD\HUVRUGLIIHUHQWHPDLOFOLHQWVDWZLOO DQG$QGURLGDGDSWVDXWRPDWLFDOO\ Components of an Android Application <RXU$QGURLGDSSOLFDWLRQVZLOOEHEXLOWIURPIRXUEDVLFFRPSRQHQWW\SHVWKDWDUHGH ILQHGE\WKH$QGURLGDUFKLWHFWXUH $FWLYLWLHV 7KHVHDUHFRPSDUDEOHWRVWDQGDORQHXWLOLWLHVRQGHVNWRSV\VWHPVVXFKDVRIILFH DSSOLFDWLRQV$FWLYLWLHVDUHSLHFHVRIH[HFXWDEOHFRGHWKDWFRPHDQGJRLQWLPH LQVWDQWLDWHGE\HLWKHUWKHXVHURUWKHRSHUDWLQJV\VWHPDQGUXQQLQJDVORQJDVWKH\ DUHQHHGHG7KH\FDQLQWHUDFWZLWKWKHXVHUDQGUHTXHVWGDWDRUVHUYLFHVIURPRWKHU DFWLYLWLHVRUVHUYLFHVYLDTXHULHVRU,QWHQWV GLVFXVVHGLQDPRPHQW  0RVWRIWKHH[HFXWDEOHFRGH\RXZULWHIRU$QGURLGZLOOH[HFXWHLQWKHFRQWH[WRI DQ$FWLYLW\$FWLYLWLHVXVXDOO\FRUUHVSRQGWRGLVSOD\VFUHHQVHDFK$FWLYLW\VKRZV RQHVFUHHQWRWKHXVHU:KHQLWLVQRWDFWLYHO\UXQQLQJDQ$FWLYLW\FDQEHNLOOHGE\ WKHRSHUDWLQJV\VWHPWRFRQVHUYHPHPRU\ 6 | Chapter 1:ಗGetting to Know Android 6HUYLFHV 7KHVHDUHDQDORJRXVWRVHUYLFHVRUGDHPRQVLQGHVNWRSDQGVHUYHURSHUDWLQJV\V WHPV7KH\DUHH[HFXWDEOHSLHFHVRIFRGHWKDWXVXDOO\UXQLQWKHEDFNJURXQGIURP WKHWLPHRIWKHLULQVWDQWLDWLRQXQWLOWKHPRELOHKDQGVHWLVVKXWGRZQ7KH\JHQHUDOO\ GRQ¦WH[SRVHDXVHULQWHUIDFH 7KHFODVVLFH[DPSOHRID6HUYLFHLVDQ03SOD\HUWKDWQHHGVWRNHHSSOD\LQJTXHXHG ILOHVHYHQZKLOHWKHXVHUKDVJRQHRQWRXVHRWKHUDSSOLFDWLRQV<RXUDSSOLFDWLRQ PD\QHHGWRLPSOHPHQW6HUYLFHVWRSHUIRUPEDFNJURXQGWDVNVWKDWSHUVLVWZLWKRXW DXVHULQWHUIDFH %URDGFDVWDQG,QWHQW5HFHLYHUV 7KHVH UHVSRQG WR UHTXHVWV IRU VHUYLFH IURP DQRWKHU DSSOLFDWLRQ $ %URDGFDVW 5HFHLYHUUHVSRQGVWRDV\VWHPZLGHDQQRXQFHPHQWRIDQHYHQW7KHVHDQQRXQFH PHQWVFDQFRPHIURP$QGURLGLWVHOI HJEDWWHU\ORZ RUIURPDQ\SURJUDPUXQ QLQJRQWKHV\VWHP$Q$FWLYLW\RU6HUYLFHSURYLGHVRWKHUDSSOLFDWLRQVZLWKDFFHVV WRLWVIXQFWLRQDOLW\E\H[HFXWLQJDQ,QWHQW5HFHLYHUDVPDOOSLHFHRIH[HFXWDEOHFRGH WKDWUHVSRQGVWRUHTXHVWVIRUGDWDRUVHUYLFHVIURPRWKHUDFWLYLWLHV7KHUHTXHVWLQJ FOLHQW DFWLYLW\LVVXHVDQ,QWHQWOHDYLQJLWXSWRWKH$QGURLGIUDPHZRUNWRILJXUH RXWZKLFKDSSOLFDWLRQVKRXOGUHFHLYHDQGDFWRQLW ,QWHQWVDUHRQHRIWKHNH\DUFKLWHFWXUDOHOHPHQWVLQ$QGURLGWKDWIDFLOLWDWHWKHFUH DWLRQRIQHZDSSOLFDWLRQVIURPH[LVWLQJDSSOLFDWLRQV PRELOHPDVKXSV <RXZLOO XVH,QWHQWVLQ\RXUDSSOLFDWLRQWRLQWHUDFWZLWKRWKHUDSSOLFDWLRQVDQGVHUYLFHVWKDW SURYLGHLQIRUPDWLRQQHHGHGE\\RXUDSSOLFDWLRQ,QWHQWVDQG,QWHQW5HFHLYHUVDUH FRYHUHGLQPRUHGHWDLOLQ&KDSWHU &RQWHQWSURYLGHUV 7KHVHDUHFUHDWHGWRVKDUHGDWDZLWKRWKHUDFWLYLWLHVRUVHUYLFHV$FRQWHQWSURYLGHU XVHVDVWDQGDUGLQWHUIDFHLQWKHIRUPRID85,WRIXOILOOUHTXHVWVIRUGDWDIURPRWKHU DSSOLFDWLRQVWKDWPD\QRWHYHQNQRZZKLFKFRQWHQWSURYLGHUWKH\DUHXVLQJ)RU H[DPSOH ZKHQ DQ DSSOLFDWLRQ LVVXHV D TXHU\ IRU &RQWDFW GDWD LW DGGUHVVHV WKH TXHU\WRD85,RIWKHIRUP content://contacts/people 7KHRSHUDWLQJV\VWHPORRNVWRVHHZKLFKDSSOLFDWLRQVKDYHUHJLVWHUHGWKHPVHOYHV DVFRQWHQWSURYLGHUVIRUWKHJLYHQ85,DQGVHQGVWKHUHTXHVWWRWKHDSSURSULDWH DSSOLFDWLRQ VWDUWLQJWKHDSSOLFDWLRQLILWLVQRWDOUHDG\UXQQLQJ ,IWKHUHLVPRUH WKDQRQHFRQWHQWSURYLGHUUHJLVWHUHGIRUWKHUHTXHVWHG85,WKHRSHUDWLQJV\VWHP DVNVWKHXVHUZKLFKRQHKHZDQWVWRXVH $QDSSOLFDWLRQGRHVQ¦WKDYHWRXVHDOORIWKH$QGURLGFRPSRQHQWVEXWDZHOOZULWWHQ DSSOLFDWLRQZLOOPDNHXVHRIWKHPHFKDQLVPVSURYLGHGUDWKHUWKDQUHLQYHQWLQJIXQF WLRQDOLW\RUKDUGFRGLQJUHIHUHQFHVWRRWKHUDSSOLFDWLRQV85,VDQG,QWHQWVWRJHWKHUDO ORZ$QGURLGWRSURYLGHDYHU\IOH[LEOHXVHUHQYLURQPHQW$SSOLFDWLRQVFDQEHHDVLO\ DGGHG GHOHWHG DQG VXEVWLWXWHG DQG WKH ORRVH FRXSOLQJ RI LQWHQWV DQG 85,V NHHSV HYHU\WKLQJZRUNLQJWRJHWKHU Components of an Android Application | 7 Start activity User navigates back to activity onCreate() onStart() onRestart() NO In foreground? Process is killed Activity becomes YES visible Activity comes onResume() to foreground Activity interacts with user onPause() Activity no longer visible onStop() onDestroy() Activity exits )LJXUH$QGURLG$FWLYLW\OLIHF\FOH Android Activity Lifecycle $QGURLGLVGHVLJQHGDURXQGWKHXQLTXHUHTXLUHPHQWVRIPRELOHDSSOLFDWLRQV,QSDU WLFXODU$QGURLGUHFRJQL]HVWKDWUHVRXUFHV PHPRU\DQGEDWWHU\IRUH[DPSOH DUHOLPL WHGRQPRVWPRELOHGHYLFHVDQGSURYLGHVPHFKDQLVPVWRFRQVHUYHWKRVHUHVRXUFHV7KH PHFKDQLVPVDUHHYLGHQWLQWKH$QGURLG$FWLYLW\/LIHF\FOHZKLFKGHILQHVWKHVWDWHVRU HYHQWVWKDWDQDFWLYLW\JRHVWKURXJKIURPWKHWLPHLWLVFUHDWHGXQWLOLWILQLVKHVUXQQLQJ 7KHOLIHF\FOHLVVKRZQGLDJUDPPDWLFDOO\LQ)LJXUH <RXUDFWLYLW\PRQLWRUVDQGUHDFWVWRWKHVHHYHQWVE\LQVWDQWLDWLQJPHWKRGVWKDWRYHUULGH WKH$FWLYLW\FODVVPHWKRGVIRUHDFKHYHQW onCreate &DOOHGZKHQ\RXUDFWLYLW\LVILUVWFUHDWHG7KLVLVWKHSODFH\RXQRUPDOO\FUHDWH\RXU YLHZVRSHQDQ\SHUVLVWHQWGDWDILOHV\RXUDFWLYLW\QHHGVWRXVHDQGLQJHQHUDOLQL WLDOL]H\RXUDFWLYLW\:KHQFDOOLQJ onCreateWKH$QGURLGIUDPHZRUNLVSDVVHGD Bundle REMHFW WKDW FRQWDLQV DQ\ DFWLYLW\ VWDWH VDYHG IURP ZKHQ WKH DFWLYLW\ UDQ EHIRUH 8 | Chapter 1:ಗGetting to Know Android onStart &DOOHGMXVWEHIRUH\RXUDFWLYLW\EHFRPHVYLVLEOHRQWKHVFUHHQ2QFHonStartFRP SOHWHVLI\RXUDFWLYLW\FDQEHFRPHWKHIRUHJURXQGDFWLYLW\RQWKHVFUHHQFRQWURO ZLOOWUDQVIHUWRonResume,IWKHDFWLYLW\FDQQRWEHFRPHWKHIRUHJURXQGDFWLYLW\IRU VRPHUHDVRQFRQWUROWUDQVIHUVWRWKHonStopPHWKRG onResume &DOOHGULJKWDIWHUonStartLI\RXUDFWLYLW\LVWKHIRUHJURXQGDFWLYLW\RQWKHVFUHHQ $WWKLVSRLQW\RXUDFWLYLW\LVUXQQLQJDQGLQWHUDFWLQJZLWKWKHXVHU<RXDUHUHFHLYLQJ NH\ERDUG DQG WRXFK LQSXWV DQG WKH VFUHHQ LV GLVSOD\LQJ \RXU XVHU LQWHUIDFH onResumeLVDOVRFDOOHGLI\RXUDFWLYLW\ORVHVWKHIRUHJURXQGWRDQRWKHUDFWLYLW\DQG WKDWDFWLYLW\HYHQWXDOO\H[LWVSRSSLQJ\RXUDFWLYLW\EDFNWRWKHIRUHJURXQG7KLVLV ZKHUH\RXUDFWLYLW\ZRXOGVWDUW RUUHVXPH GRLQJWKLQJVWKDWDUHQHHGHGWRXSGDWH WKH XVHU LQWHUIDFH UHFHLYLQJ ORFDWLRQ XSGDWHV RU UXQQLQJ DQ DQLPDWLRQ IRU H[DPSOH  onPause &DOOHGZKHQ$QGURLGLVMXVWDERXWWRUHVXPHDGLIIHUHQWDFWLYLW\JLYLQJWKDWDFWLYLW\ WKHIRUHJURXQG$WWKLVSRLQW\RXUDFWLYLW\ZLOOQRORQJHUKDYHDFFHVVWRWKHVFUHHQ VR\RXVKRXOGVWRSGRLQJWKLQJVWKDWFRQVXPHEDWWHU\DQG&38F\FOHVXQQHFHVVD ULO\,I\RXDUHUXQQLQJDQDQLPDWLRQQRRQHLVJRLQJWREHDEOHWRVHHLWVR\RX PLJKWDVZHOOVXVSHQGLWXQWLO\RXJHWWKHVFUHHQEDFN<RXUDFWLYLW\QHHGVWRWDNH DGYDQWDJHRIWKLVPHWKRGWRVWRUHDQ\VWDWHWKDW\RXZLOOQHHGLQFDVH\RXUDFWLYLW\ JDLQVWKHIRUHJURXQGDJDLQ¢DQGLWLVQRWJXDUDQWHHGWKDW\RXUDFWLYLW\ZLOOUHVXPH ,IWKHPRELOHGHYLFH\RXDUHUXQQLQJRQUXQVRXWRIPHPRU\WKHUHLVQRYLUWXDO PHPRU\RQGLVNWRXVHIRUH[SDQVLRQVR\RXUDFWLYLW\PD\KDYHWRPDNHZD\IRU DV\VWHPSURFHVVWKDWQHHGVPHPRU\2QFH\RXH[LWWKLVPHWKRG$QGURLGPD\NLOO \RXUDFWLYLW\DWDQ\WLPHZLWKRXWUHWXUQLQJFRQWUROWR\RX onStop &DOOHGZKHQ\RXUDFWLYLW\LVQRORQJHUYLVLEOHHLWKHUEHFDXVHDQRWKHUDFWLYLW\KDV WDNHQWKHIRUHJURXQGRUEHFDXVH\RXUDFWLYLW\LVEHLQJGHVWUR\HG onDestroy 7KHODVWFKDQFHIRU\RXUDFWLYLW\WRGRDQ\SURFHVVLQJEHIRUHLWLVGHVWUR\HG1RU PDOO\\RX¦GJHWWRWKLVSRLQWEHFDXVHWKHDFWLYLW\LVGRQHDQGWKHIUDPHZRUNFDOOHG LWVfinishPHWKRG%XWDVPHQWLRQHGHDUOLHUWKHPHWKRGPLJKWEHFDOOHGEHFDXVH $QGURLGKDVGHFLGHGLWQHHGVWKHUHVRXUFHV\RXUDFWLYLW\LVFRQVXPLQJ ,WLVLPSRUWDQWWRWDNHDGYDQWDJHRIWKHVHPHWKRGVWRSURYLGHWKHEHVWXVHUH[SHULHQFH SRVVLEOH 7KLV LV WKH ILUVW SODFH LQ WKLV ERRN ZH¦YH GLVFXVVHG KRZ SURJUDPPLQJ IRU PRELOHGHYLFHVLVGLIIHUHQWIURPSURJUDPPLQJIRUGHVNWRSGHYLFHVDQGWKHUHZLOOEH PDQ\PRUHVXFKSODFHVDV\RXJRWKURXJKODWHUFKDSWHUV<RXUXVHUVZLOODSSUHFLDWHLW LI\RXZULWH\RXUDFWLYLWLHVZLWKWKHDFWLYLW\OLIHF\FOHLQPLQGDQG\RXZLOOXOWLPDWHO\ EHQHILW Android Activity Lifecycle | 9 Android Service Lifecycle 7KHOLIHF\FOHIRUDVHUYLFHLVVLPLODUWRWKDWIRUDQDFWLYLW\EXWGLIIHUHQWLQDIHZLPSRUWDQW GHWDLOV onCreateDQGonStartGLIIHUHQFHV 6HUYLFHV FDQ EH VWDUWHG ZKHQ D FOLHQW FDOOV WKH Context.startService(Intent) PHWKRG ,I WKH VHUYLFH LVQ¦W DOUHDG\ UXQQLQJ $QGURLG VWDUWV LW DQG FDOOV LWV onCreatePHWKRGIROORZHGE\WKHonStartPHWKRG,IWKHVHUYLFHLVDOUHDG\UXQQLQJ LWVonStartPHWKRGLVLQYRNHGDJDLQZLWKWKHQHZLQWHQW6RLW¦VTXLWHSRVVLEOHDQG QRUPDOIRUDVHUYLFH¦VonStartPHWKRGWREHFDOOHGUHSHDWHGO\LQDVLQJOHUXQRIWKH VHUYLFH onResumeonPauseDQGonStopDUHQRWQHHGHG 5HFDOOWKDWDVHUYLFHJHQHUDOO\KDVQRXVHULQWHUIDFHVRWKHUHLVQ¦WDQ\QHHGIRUWKH onPauseonResumeRUonStopPHWKRGV:KHQHYHUDVHUYLFHLVUXQQLQJLWLVDOZD\V LQWKHEDFNJURXQG onBind ,IDFOLHQWQHHGVDSHUVLVWHQWFRQQHFWLRQWRDVHUYLFHLWFDQFDOOWKH Context.bind ServicePHWKRG7KLVFUHDWHVWKHVHUYLFHLILWLVQRWUXQQLQJDQGFDOOVonCreateEXW QRW onStart,QVWHDGWKH onBindPHWKRGLVFDOOHGZLWKWKHFOLHQW¦VLQWHQWDQGLW UHWXUQVDQIBindREMHFWWKDWWKHFOLHQWFDQXVHWRPDNHIXUWKHUFDOOVWRWKHVHUYLFH ,W¦VTXLWHQRUPDOIRUDVHUYLFHWRKDYHFOLHQWVVWDUWLQJLWDQGFOLHQWVERXQGWRLWDW WKHVDPHWLPH onDestroy $VZLWKDQDFWLYLW\WKHonDestroyPHWKRGLVFDOOHGZKHQWKHVHUYLFHLVDERXWWREH WHUPLQDWHG$QGURLGZLOOWHUPLQDWHDVHUYLFHZKHQWKHUHDUHQRPRUHFOLHQWVVWDUWLQJ RU ERXQG WR LW $V ZLWK DFWLYLWLHV $QGURLG PD\ DOVR WHUPLQDWH D VHUYLFH ZKHQ PHPRU\LVJHWWLQJORZ,IWKDWKDSSHQV$QGURLGZLOODWWHPSWWRUHVWDUWWKHVHUYLFH ZKHQWKHPHPRU\SUHVVXUHSDVVHVVRLI\RXUVHUYLFHQHHGVWRVWRUHSHUVLVWHQWLQ IRUPDWLRQIRUWKDWUHVWDUWLW¦VEHVWWRGRVRLQWKHonStartPHWKRG How This Book Fits Together $QGURLGLVDVRSKLVWLFDWHGSODWIRUPZKRVHSDUWVDOOZRUNWRJHWKHUGUDZLQJDQGOD\RXW LQWHUSURFHVVFRPPXQLFDWLRQDQGGDWDVWRUDJHVHDUFKDQGORFDWLRQ,QWURGXFLQJLWLQ SLHFHVLVDFKDOOHQJHEXWZH¦YHHQWHUWDLQHGWKHFRQFHLWRILQWURGXFLQJWKHFRPSOH[LWLHV RIWKHSODWIRUPLQDOLQHDURUGHU 7KHSODWIRUPLVDOVRVRULFKWKDWZHFDQ¦WKRSHWRVKRZ\RXKRZWRXVHHYHU\WKLQJ\RX ZDQWRUHYHQDODUJHVXEVHWRILWVFDSDELOLWLHV:HH[SHFW\RXWRFRQVXOWWKHRIILFLDO GRFXPHQWDWLRQZKLOHUHDGLQJWKLVERRNDQGWU\LQJWKHH[DPSOHV<RXVKRXOGDOVRXVH RWKHURQOLQHUHVRXUFHV¢EXWEHFDUHIXODERXWZHESDJHVRUIRUXPSRVWLQJVWKDWKDYH 10 | Chapter 1:ಗGetting to Know Android EHHQDURXQGDZKLOHEHFDXVHLQWHUIDFHVFKDQJH7KHUHLVDOVRDVXEVWDQWLDODPRXQWRI PLVLQIRUPDWLRQRXWRQWKH:HEZHGLVFRYHUHGVFDGVRILWZKLOHZULWLQJWKHERRN 7KLVERRNLVZULWWHQIRUH[SHULHQFHGGHYHORSHUVZKRZDQWWRTXLFNO\OHDUQZKDWWKH\ QHHGWRNQRZWREXLOG$QGURLGDSSOLFDWLRQV7KHERRNLVZULWWHQZLWKUHIHUHQFHVWRDQ H[DPSOHDSSOLFDWLRQ 0-$QGURLGGLVFXVVHGLQPXFKPRUHGHWDLOLQWKHQH[WFKDSWHU WKDW\RXFDQIUHHO\GRZQORDGDQGUHXVH7KHPDMRUWRSLFVFRYHUHGLQWKHERRNLQFOXGH 1HZ$QGURLGFRQFHSWV $QGURLGEXLOGVXSRQDORWRIOHJDF\WHFKQRORJ\ -DYD/LQX[DQGWKH,QWHUQHWMXVW WRQDPHDIHZ EXWLWDOVRLQWURGXFHVVRPHQHZFRQFHSWVQHHGHGWRHQDEOHWKH DSSOLFDWLRQHQYLURQPHQW $QGURLGGHYHORSPHQWHQYLURQPHQW :H¦OOVKRZKRZWRLQVWDOOWKHIUHHRSHQVRXUFH$QGURLGGHYHORSPHQWHQYLURQPHQW RQ\RXURZQV\VWHPDQGKRZWRXVHWKDWHQYLURQPHQWWRGHYHORSWHVWDQGGHEXJ \RXURZQDSSOLFDWLRQV<RX¦OOQRWRQO\OHDUQWKHPHFKDQLFVRIXVLQJWKHV\VWHP EXWDOVRZKDW¦VJRLQJRQEHKLQGWKHVFHQHVVR\RX¦OOKDYHDEHWWHUXQGHUVWDQGLQJ RIKRZWKHZKROHV\VWHPILWVWRJHWKHU $QGURLGXVHULQWHUIDFH 7KH$QGURLGXVHULQWHUIDFHHOHPHQWVDUHVLPLODUWRWKLQJV\RX¦YHVHHQEHIRUHEXW DOVRGLIIHUHQW:H¦OOVKRZ\RXZKDWWKHSULQFLSDOHOHPHQWVDUHKRZWKH\¦UHXVHG DQGZKDWWKH\ORRNOLNHRQWKHVFUHHQ:H¦OODOVRVKRZ\RXWKHEDVLFOD\RXWW\SHV DYDLODEOHIRUWKH$QGURLGVFUHHQ ,QWHQWV $QGURLGPDNHVLWHDV\WROHYHUDJHH[LVWLQJDSSOLFDWLRQVWKURXJKWKHXVHRI,QWHQWV )RUH[DPSOHLI\RXZDQWWRGLDODSKRQHQXPEHU\RXGRQ¦WKDYHWRGRDOOWKHZRUN LQ\RXUDSSOLFDWLRQRUHYHQNQRZZKDWDSSOLFDWLRQVDUHDYDLODEOHWKDWNQRZKRZ WRGLDO<RXFDQMXVWDVN$QGURLGWRILQG\RXDQLQVWDOOHGDSSOLFDWLRQWKDWNQRZV KRZWRGLDORXWDQGSDVVLWWKHVWULQJRIQXPEHUV /RFDWLRQEDVHGVHUYLFHVDQGPDSSLQJ $V\RX¦GH[SHFWIURPD*RRJOHVSRQVRUHGHQYLURQPHQWPDSSLQJDQGORFDWLRQDUH PDMRUIHDWXUHVRI$QGURLG<RX¦OOVHHKRZHDV\LWLVWRFUHDWHVRSKLVWLFDWHGPDSSLQJ DQGORFDWLRQEDVHGDSSOLFDWLRQV 3HUVLVWHQWGDWD $QGURLGLQFOXGHVWKHSQLiteGDWDEDVHOLEUDULHVDQGWRROVZKLFK\RXUDSSOLFDWLRQ FDQ XVH WR VWRUH SHUVLVWHQW GDWD &RQWHQW SURYLGHUV ZKLFK ZH¦YH DOUHDG\ LQWUR GXFHGSURYLGHGDWDWRRWKHUDSSOLFDWLRQV8VLQJWKHOLEUDULHVFDQEHDOLWWOHWULFN\ EXWLQ&KDSWHUZH¦OOJXLGH\RXWKURXJKWKHFUHDWLRQRIDGDWDEDVHDQGUHDGLQJ ZULWLQJDQGGHOHWLQJGDWDUHFRUGV *UDSKLFV <RXUDSSOLFDWLRQKDVDFFHVVWR'DQG'JUDSKLFVFDSDELOLWLHVLQ$QGURLG$QL PDWLRQDQGYDULRXVDGYDQFHGHIIHFWVDUHDOVRSURYLGHG7KLVERRNZLOOVKRZ\RX How This Book Fits Together | 11 KRZWRXVHWKRVHOLEUDULHVVR\RXFDQEXLOGDFRPSHOOLQJXVHULQWHUIDFHIRU\RXU DSSOLFDWLRQ &RPPXQLFDWLRQV $QGURLGHYHQPRUHWKDQPRVWVPDUWSKRQHRSHUDWLQJV\VWHPVSODFHVJUHDWHP SKDVLVRQFRPPXQLFDWLRQ¢E\YRLFHE\WH[WPHVVDJLQJE\LQVWDQWPHVVDJLQJDQG E\,QWHUQHW<RX¦OOVHHKRZ\RXUDSSOLFDWLRQFDQWDNHDGYDQWDJHRIWKHVHFDSDELOLWLHV VR\RXUXVHUVFDQEHFRPHSDUWRIDODUJHUFRPPXQLW\RIGDWDDQGXVHUV 7KHQH[WWKUHHFKDSWHUV&KDSWHUVWKURXJKVHW\RXXSZLWKDZRUNLQJDSSOLFDWLRQ DQG ZLOO JLYH \RX D VHQVH RI KRZ WKH ILOHV DQG EDVLF FODVVHV ILW WRJHWKHU &KDSWHU  HPSRZHUV\RXWREHWWHUXQGHUVWDQGZKDW\RX¦UHGRLQJDQGKHOSV\RXGHEXJ\RXUILUVW HIIRUWV 7KH$QGURLGWRRONLWQDWXUDOO\FRPHVZLWKDQHQRUPRXVQXPEHURIZRUNLQJFRGHH[ DPSOHV LQ LWV $SL'HPRV DSSOLFDWLRQ 8QIRUWXQDWHO\ LWV YHU\ VL]H DQG VRSKLVWLFDWLRQ PDNHLWDIRUPLGDEOHFDVWOHIRUQRYLFHVWRHQWHU&KDSWHUJXLGHV\RXWKURXJKLW $ELWRIH[SHULHQFHZLWK$SL'HPRVZLOOFRQYLQFH\RXWKDW\RXQHHGVRPHPRUHEDFN JURXQGDQGWXWRULDOKHOS,Q&KDSWHUZH¦OOVKRZ\RXKRZWRVLJQDQGSXEOLVK\RXU DSSOLFDWLRQZKLFK\RXQHHGWRGRLQRUGHUWRWHVWLWZLWK*RRJOH0DSVHYHQEHIRUH \RX¦UHUHDG\WRJRSXEOLF &KDSWHUSUHVHQWVWXWRULDOVRQWZRGDWDVWRUDJHV\VWHPV &KDSWHUSUHVHQWVORFDWLRQDQGPDSSLQJZKLFKDUHNH\IHDWXUHVWKDWGUDZSHRSOHWR PRELOHGHYLFHVDQGZKLFK\RX¦OOVXUHO\ZDQWWRLQFRUSRUDWHLQWR\RXUDSSOLFDWLRQ :H WKHQ WXUQ WR D FULWLFDO SDUW RI DQ\ HQGXVHU DSSOLFDWLRQ JUDSKLFV LQ WKUHH LQIRUPDWLRQSDFNHGFKDSWHUV&KDSWHUVWKURXJK &KDSWHUWDNHVDQRWKHUVWHSLQWRWKHFRPSOH[LW\DQGXQLTXHSRZHURI$QGURLGE\ GLVFXVVLQJKRZDSSOLFDWLRQVFDQRIIHUIXQFWLRQDOLW\WRRWKHUDSSOLFDWLRQV7KLVDOORZV IRUSRZHUIXOPDVKXSVZKLFKLQYROYHRQHSURJUDPVWDQGLQJRQWKHVKRXOGHUVRIRWKHU SURJUDPV /HW¦VQRWIRUJHWWKDW$QGURLGUXQVRQWHOHSKRQHV&KDSWHUVDQGZUDSXSWKHERRN E\VKRZLQJ\RXKRZWRSODFHDQGWUDFNSKRQHFDOOV 7KHUH¦VHYHQPRUHWR$QGURLGWKDQWKHVHIHDWXUHVRIFRXUVHEXWSURJUDPPHUVRIDOO VWULSHVZLOOILQGLQWKLVERRNZKDWWKH\QHHGWRFUHDWHXVHIXODQGHIILFLHQWSURJUDPVIRU WKH$QGURLGSODWIRUP 12 | Chapter 1:ಗGetting to Know Android CHAPTER 2 Setting Up Your Android Development Environment Setting Up Your Development Environment $QGURLGDSSOLFDWLRQVOLNHPRVWPRELOHSKRQHDSSOLFDWLRQVDUHGHYHORSHGLQDKRVW WDUJHWGHYHORSPHQWHQYLURQPHQW,QRWKHUZRUGV\RXGHYHORS\RXUDSSOLFDWLRQRQD KRVW FRPSXWHU ZKHUH UHVRXUFHV DUH DEXQGDQW  DQG GRZQORDG LW WR D WDUJHW PRELOH SKRQHIRUWHVWLQJDQGXOWLPDWHXVH$SSOLFDWLRQVFDQEHWHVWHGDQGGHEXJJHGHLWKHURQ DUHDO$QGURLGGHYLFHRURQDQHPXODWRU)RUPRVWGHYHORSHUVXVLQJDQHPXODWRULV HDVLHUIRULQLWLDOGHYHORSPHQWDQGGHEXJJLQJIROORZHGE\ILQDOWHVWLQJRQUHDOGHYLFHV 7RZULWH\RXURZQ$QGURLGPRELOHSKRQHDSSOLFDWLRQV\RX¦OOILUVWQHHGWRFROOHFWWKH UHTXLUHGWRROVDQGVHWXSDQDSSURSULDWHGHYHORSPHQWHQYLURQPHQWRQ\RXU3&RU0DF ,QWKLVFKDSWHUZH¦OOFROOHFWWKHWRROV\RXQHHGGRZQORDGWKHPDQGLQVWDOOWKHPRQ \RXUFRPSXWHUDQGZULWHDVDPSOHDSSOLFDWLRQWKDWZLOOOHW\RXJHWWKHIHHORIZULWLQJ DQGUXQQLQJ$QGURLGDSSOLFDWLRQVRQDQHPXODWRU/LQX[:LQGRZVDQG26;DUHDOO VXSSRUWHGGHYHORSPHQWHQYLURQPHQWVDQGZH¦OOVKRZ\RXKRZWRLQVWDOOWKHODWHVWVHW RIWRROVRQHDFK7KHQZH¦OOVKRZ\RXDQ\FRQILJXUDWLRQ\RXQHHGWRGRDIWHULQVWDOOLQJ WKHWRROV VHWWLQJ3$7+HQYLURQPHQWYDULDEOHVDQGWKHOLNH DJDLQIRUHDFKRIWKHWKUHH RSHUDWLQJV\VWHPV)LQDOO\ZH¦OOZULWHDVKRUWOLWWOH£+HOOR$QGURLG¤DSSOLFDWLRQWKDW GHPRQVWUDWHVZKDWQHHGVWREHGRQHLQRUGHUWRJHWDJHQHULFDSSOLFDWLRQUXQQLQJ 7KH $QGURLG 6'. VXSSRUWV VHYHUDO GLIIHUHQW LQWHJUDWHG GHYHORSPHQW HQYLURQPHQWV ,'(V )RUWKLVERRNZHZLOOIRFXVRQ(FOLSVHEHFDXVHLWLVWKH,'(WKDWLVEHVWLQWHJUDWHG ZLWKWKH6'.DQGKH\LW¦VIUHH1RPDWWHUZKLFKRSHUDWLQJV\VWHP\RXDUHXVLQJ\RX ZLOOQHHGHVVHQWLDOO\WKHVDPHVHWRIWRROV ‡ 7KH(FOLSVH,'( ‡ 6XQ¦V-DYD'HYHORSPHQW.

‡ 7KH$QGURLG6RIWZDUH'HYHORSHU¦V. ‡ 7KH$QGURLG'HYHORSHU7RRO $'7 DVSHFLDO(FOLSVHSOXJLQ 13 6LQFH\RX¦UHSUREDEO\JRLQJWRGHYHORSRQRQO\RQHRIWKHKRVWRSHUDWLQJV\VWHPVVNLS WRWKHDSSURSULDWHVHFWLRQWKDWSHUWDLQVWR\RXUVHOHFWHGRSHUDWLQJV\VWHP Creating an Android Development Environment 7KH $QGURLG 6RIWZDUH 'HYHORSPHQW .LW VXSSRUWV :LQGRZV ;3 DQG 9LVWD  /LQX[ WHVWHGRQ8EXQWX'DSSHU'UDNHEXWDQ\UHFHQW/LQX[GLVWURVKRXOGZRUN DQG0DF 26; RUODWHU,QWHOSODWIRUPRQO\ DVKRVWGHYHORSPHQWHQYLURQPHQWV,QVWDO ODWLRQRIWKH6'.LVVXEVWDQWLDOO\WKHVDPHIRUDQ\RIWKHRSHUDWLQJV\VWHPVDQGPRVW RIWKLVGHVFULSWLRQDSSOLHVHTXDOO\WRDOORIWKHP:KHUHWKHSURFHGXUHGLIIHUVZHZLOO FOHDUO\WHOO\RXZKDWWRGRIRUHDFKHQYLURQPHQW  ,QVWDOO-'.YHUVLRQRUYHUVLRQ,I\RXDOUHDG\ KDYHRQHRIWKRVHLQVWDOOHGVNLSWRWKHQH[WVWHS,QSDUWLFXODU0DF26;FRPHV ZLWKWKH-'.YHUVLRQDOUHDG\LQVWDOOHGDQGPDQ\/LQX[GLVWULEXWLRQVLQFOXGHD -'.LVQRWLQVWDOOHGJRWRKWWSMDYDVXQFRPMDYDVHGRZQORDGVDQG \RX¦OOVHHDOLVWRI-DYDSURGXFWVWRGRZQORDG<RXZDQW-'.8SGDWHQIRU\RXU RSHUDWLQJV\VWHPZKHUHQLVDWWKHWLPHRIWKLVZULWLQJ :LQGRZV ;3DQG9LVWD ‡ 6HOHFWWKHGLVWULEXWLRQIRU£:LQGRZV2IIOLQH,QVWDOODWLRQ0XOWLODQJXDJH¤ ‡ 5HDGUHYLHZDQGDFFHSW6XQ¦VOLFHQVHIRUWKH-'. 7KHOLFHQVHKDVEHFRPH YHU\SHUPLVVLYHEXWLI\RXKDYHDSUREOHPZLWKLWDOWHUQDWLYHIUHH-'.V H[LVW ‡ 2QFHWKHGRZQORDGLVFRPSOHWHDGLDORJER[ZLOODVN\RXZKHWKHU\RXZDQW WRUXQWKHGRZQORDGHGH[HFXWDEOH:KHQ\RXVHOHFW£5XQ¤WKH:LQGRZV ,QVWDOOHUZLOOVWDUWXSDQGOHDG\RXWKURXJKDGLDORJWRLQVWDOOWKH-'.RQ \RXU3& /LQX[ ‡ 6HOHFWWKHGLVWULEXWLRQIRU£/LQX[VHOIH[WUDFWLQJILOH¤ ‡ 5HDGUHYLHZDQGDFFHSW6XQ¦VOLFHQVHIRUWKH-'. 7KHOLFHQVHKDVEHFRPH YHU\SHUPLVVLYHEXWLI\RXKDYHDSUREOHPZLWKLWDOWHUQDWLYHIUHH-'.V H[LVW ‡ <RX ZLOO QHHG WR GRZQORDG WKH VHOIH[WUDFWLQJ ELQDU\ WR WKH ORFDWLRQ LQ ZKLFK\RXZDQWWRLQVWDOOWKH-'.RQ\RXUILOHV\VWHP,IWKDWLVDV\VWHP ZLGH GLUHFWRU\ VXFK DV XVUORFDO  \RX ZLOO QHHG URRW DFFHVV $IWHU WKH ILOH LV GRZQORDGHG PDNH LW H[HFXWDEOH chmod +x jdk-6version-linux- i586.bin DQGH[HFXWHLW,WZLOOVHOIH[WUDFWWRFUHDWHDWUHHRIGLUHFWRULHV 0DF26; 0DF26;FRPHVZLWK-'.YHUVLRQDOUHDG\ORDGHG 14 | Chapter 2:ಗSetting Up Your Android Development Environment  ,QVWDOO(FOLSVH7KH$QGURLG6'.UHTXLUHV(FOLSVHYHUVLRQRUODWHU,I\RXGR QRWKDYHWKDWYHUVLRQRI(FOLSVHLQVWDOOHG\HW\RXZLOOQHHGWRJRWRKWWSZZZ HFOLSVHRUJGRZQORDGVWRJHWLWDQG\RXPLJKWDVZHOOJHWYHUVLRQ DOVRNQRZQ DV*DQ\PHGH VLQFHWKDWSDFNDJHLQFOXGHVWKHUHTXLUHGSOXJLQVPHQWLRQHGLQWKH QH[WVWHS<RXZDQWWKHYHUVLRQRIWKH(FOLSVH,'(ODEHOHG£(FOLSVH,'(IRU-DYD 'HYHORSHUV¤DQGREYLRXVO\\RXZDQWWKHYHUVLRQIRU\RXURSHUDWLQJV\VWHP(FOLSVH ZLOODVN\RXWRVHOHFWDPLUURUVLWHDQGZLOOWKHQVWDUWWKHGRZQORDG :LQGRZV ;3RU9LVWD 7KH(FOLSVHGRZQORDGFRPHVDVDELJ=,3ILOHWKDW\RXLQVWDOOE\H[WUDFWLQJWKH ILOHVWR\RXUIDYRULWHGLUHFWRU\)RUWKLVERRNZH¦OODVVXPHWKDW\RXH[WUDFWHG WR&HFOLSVH(FOLSVHLVQRZLQVWDOOHGEXWLWZLOOQRWVKRZXSLQ\RXU6WDUWPHQX RIDSSOLFDWLRQV<RXPD\ZDQWWRFUHDWHD:LQGRZVVKRUWFXWIRU&HFOLSVH HFOLSVHH[HDQGSODFHLWRQ\RXUGHVNWRSLQ\RXU6WDUWPHQXRUVRPHSODFHHOVH ZKHUH\RXFDQHDVLO\ILQGLW /LQX[DQG0DF26; 1RWHWKDWDVRIWKLVZULWLQJWKHYHUVLRQRI(FOLSVHLQVWDOOHGLI\RXUHTXHVWLW RQ 8EXQWX +DUG\ +HURQ LV  ZKLFK GRHV QRW FRQWDLQ DOO WKH SOXJLQV QHHGHGIRU$QGURLG7KH(FOLSVHGRZQORDGFRPHVDVDELJWDUEDOO J]ILOH WKDW \RXLQVWDOOE\H[WUDFWLQJWKHILOHVWR\RXUIDYRULWHGLUHFWRU\)RUWKLVERRNZH¦OO DVVXPHWKDW\RXH[WUDFWHGWRXVUOLEHFOLSVH7KHH[HFXWDEOHLWVHOILVORFDWHGLQ WKDWGLUHFWRU\DQGLVQDPHGHFOLSVH  &KHFNIRUUHTXLUHGSOXJLQV<RXFDQVNLSWKLVVWHSLI\RXMXVWGRZQORDGHGD FXUUHQWYHUVLRQRI(FOLSVHDVZHUHFRPPHQGHG,I\RXDUHXVLQJDSUHLQVWDOOHGYHU VLRQRI(FOLSVH\RXQHHGWRPDNHVXUH\RXKDYHWKH-DYD'HYHORSPHQW7RRO -'7 DQG:HE6WDQGDUG7RROV :67 SOXJLQV<RXFDQHDVLO\FKHFNWRVHHZKHWKHUWKH\ DUH LQVWDOOHG E\ VWDUWLQJ (FOLSVH DQG VHOHFWLQJ PHQX RSWLRQV £:LQGRZV ൺ 3UHIHUHQFHV¤7KHOLVWRISUHIHUHQFHVVKRXOGLQFOXGHRQHIRU£-DYD¤DQGRQHIRU HLWKHU£;0/¤RU£:HEDQG;0/¤,IWKH\DUHQ¦WRQWKHOLVWWKHHDVLHVWWKLQJWRGR LVUHLQVWDOO(FOLSVHDVGHVFULEHGLQWKHSUHYLRXVVWHS,QVWDOOLQJ£(FOLSVH,'(IRU -DYD'HYHORSHUV¤ZLOODXWRPDWLFDOO\JHWWKHQHHGHGSOXJLQV  ,QVWDOO$QGURLG6'.7KLVLVZKHUH\RXVKRXOGVWDUWLI\RXDOUHDG\KDYHWKHULJKW YHUVLRQVRI(FOLSVHDQGWKH-'.ORDGHG7KH$QGURLG6'.LVGLVWULEXWHGWKURXJK *RRJOH¦V $QGURLG VLWH KWWSGHYHORSHUDQGURLGFRPVGNBULQGH[KWPO <RX ZLOOQHHGWRUHDGUHYLHZDQGDFFHSWWKHWHUPVRIWKHOLFHQVHWRSURFHHG:KHQ\RX JHWWRWKHOLVWRIGRZQORDGV\RXZLOOVHHDWDEOHRIGLVWULEXWLRQV6HOHFWWKHRQHIRU \RXURSHUDWLQJV\VWHP ;3DQG9LVWDXVHWKHVDPHGLVWULEXWLRQ 7KHSDFNDJH ILOH QDPHV LQFOXGH WKH UHOHDVH QXPEHU )RU H[DPSOH DV WKLV LV ZULWWHQ WKH ODWHVW YHUVLRQ RI WKH 6'. LV BU VR WKH ILOHQDPH IRU :LQGRZV LV DQGURLGVGN ZLQGRZVBU]LS Setting Up Your Development Environment | 15 )RUYHUVLRQVDQGODWHURI(FOLSVHWKH$QGURLGGRZQORDGVLWHSURYLGHVGLUHFWLRQV DERXWKRZWRLQVWDOOWKHSOXJLQWKURXJK(FOLSVH¦VVRIWZDUHXSGDWHVXWLOLW\,I\RX¦UH XVLQJ(FOLSVHRUWKHVRIWZDUHXSGDWHWHFKQLTXHGRHVQ¦WZRUNIRU\RXGRZQORDG WKH 6'. IURP WKH $QGURLG VLWH DQG LQVWDOO LW XVLQJ LQVWUXFWLRQV LQ WKH QH[W SDUDJUDSK 7KHILOH\RXGRZQORDGLVDQRWKHUDUFKLYHILOHDVZLWK(FOLSVHD=,3ILOHRQ:LQ GRZVDWDU]LSSHGILOHIRU/LQX[DQG0DF26;'RWKHVDPHWKLQJDVIRU(FOLSVH H[WUDFWWKHDUFKLYHILOHWRDGLUHFWRU\ZKHUH\RXZDQWWRLQVWDOO$QGURLGDQGPDNH DQRWHRIWKHGLUHFWRU\QDPH \RX¦OOQHHGLWLQVWHS 7KHH[WUDFWLRQZLOOFUHDWHD GLUHFWRU\WUHHFRQWDLQLQJDEXQFKRIVXEGLUHFWRULHVLQFOXGLQJRQHFDOOHGWRROV  8SGDWH WKH HQYLURQPHQW YDULDEOHV 7R PDNH LW HDVLHU WR ODXQFK WKH $QGURLG WRROVDGGWKHWRROVGLUHFWRU\WR\RXUSDWK ‡ 2Q:LQGRZV;3FOLFNRQ6WDUWWKHQULJKWFOLFNRQ0\&RPSXWHU,QWKHSRS XS PHQX FOLFN RQ 3URSHUWLHV ,Q WKH UHVXOWLQJ 6\VWHP 3URSHUWLHV GLDORJ ER[ VHOHFWWKH$GYDQFHGWDE1HDUWKHERWWRPRIWKH$GYDQFHGWDELVDEXWWRQ£(Q YLURQPHQW9DULDEOHV¤WKDWWDNHV\RXWRDQ(QYLURQPHQW9DULDEOHVGLDORJ8VHU HQYLURQPHQWYDULDEOHVDUHOLVWHGLQWKHWRSKDOIRIWKHER[DQG6\VWHPHQYLURQ PHQWYDULDEOHVLQWKHERWWRPKDOI6FUROOGRZQWKHOLVWRI6\VWHPHQYLURQPHQW YDULDEOHVXQWLO\RXILQG£3DWK¤VHOHFWLWDQGFOLFNWKH£(GLW¤EXWWRQ1RZ\RX ZLOOEHLQDQ(GLW6\VWHP9DULDEOHGLDORJWKDWDOORZV\RXWRFKDQJHWKHHQYL URQPHQWYDULDEOH£3DWK¤$GGWKHIXOOSDWKRIWKHWRROVGLUHFWRU\WRWKHHQGRI WKHH[LVWLQJ3DWKYDULDEOHDQGFOLFN£2.¤<RXVKRXOGQRZVHHWKHQHZYHUVLRQ RIWKHYDULDEOHLQWKHGLVSOD\HGOLVW&OLFN£2.¤DJDLQWRH[LWWKH GLDORJER[HV ‡ 2Q:LQGRZV9LVWDFOLFNRQWKH0LFURVRIW£IODJ¤LQWKHORZHUOHIWRIWKHGHVNWRS WKHQULJKWFOLFNRQ&RPSXWHU$WWKHWRSRIWKHUHVXOWLQJGLVSOD\MXVWEHORZWKH PHQXEDUFOLFNRQ£6\VWHP3URSHUWLHV¤,QWKHFROXPQRQWKHOHIWRIWKHUHVXOWLQJ ER[FOLFNRQ£$GYDQFHGV\VWHPVHWWLQJV¤9LVWDZLOOZDUQ\RXZLWKDGLDORJER[ WKDW VD\V £:LQGRZV QHHGV \RXU SHUPLVVLRQ WR FRQWLQXH¤ FOLFN £&RQWLQXH¤ 1HDUWKHERWWRPRIWKH6\VWHP3URSHUWLHVER[LVDEXWWRQODEHOHG£(QYLURQPHQW 9DULDEOHV¤WKDWWDNHV\RXWRDQ(QYLURQPHQW9DULDEOHVGLDORJ8VHUHQYLURQPHQW YDULDEOHVDUHOLVWHGLQWKHWRSKDOIRIWKHER[DQG6\VWHPHQYLURQPHQWYDULDEOHV LQWKHERWWRPKDOI6FUROOGRZQWKHOLVWRI6\VWHPHQYLURQPHQWYDULDEOHVXQWLO \RXILQG£3DWK¤VHOHFWLWDQGFOLFNWKH£(GLW¤EXWWRQ1RZ\RXZLOOEHLQDQ (GLW6\VWHP9DULDEOHGLDORJWKDWDOORZV\RXWRFKDQJHWKHHQYLURQPHQWYDULDEOH £3DWK¤$GGWKHIXOOSDWKRIWKHWRROVGLUHFWRU\WRWKHHQGRIWKHH[LVWLQJ3DWK YDULDEOHDQGFOLFN£2.¤<RXVKRXOGQRZVHHWKHQHZYHUVLRQRIWKHYDULDEOH LQWKHGLVSOD\HGOLVW&OLFN£2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu "Phát Triển Ứng Dụng Android: Hướng Dẫn Toàn Diện" cung cấp một cái nhìn tổng quan và chi tiết về quy trình phát triển ứng dụng Android, từ việc lên ý tưởng, thiết kế giao diện, đến lập trình và triển khai. Nó không chỉ giúp người đọc nắm vững các công nghệ và công cụ cần thiết mà còn hướng dẫn họ cách tối ưu hóa ứng dụng để đạt hiệu suất tốt nhất. Những lợi ích mà tài liệu mang lại bao gồm việc trang bị kiến thức thực tiễn, giúp người đọc tự tin hơn trong việc phát triển ứng dụng của riêng mình.

Nếu bạn muốn mở rộng thêm kiến thức về phát triển ứng dụng di động, hãy tham khảo tài liệu Đồ án hcmute xây dựng app khám bệnh online với react native và nodejs, nơi bạn sẽ tìm thấy cách xây dựng ứng dụng khám bệnh trực tuyến. Ngoài ra, tài liệu Luận văn tốt nghiệp xây dựng ứng dụng chat trong android với firebase sẽ giúp bạn hiểu rõ hơn về việc phát triển ứng dụng chat trên nền tảng Android. Cuối cùng, tài liệu Đồ án chuyên ngành xây dựng ứng dụng di động bán hoa dflower cho cửa hàng ld ở bình dương sẽ mang đến cho bạn cái nhìn sâu sắc về việc phát triển ứng dụng thương mại điện tử. Những tài liệu này sẽ là cơ hội tuyệt vời để bạn khám phá và mở rộng kiến thức trong lĩnh vực phát triển ứng dụng di động.