intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

ANDROID _1

Chia sẻ: Kim Kim | Ngày: | Loại File: PDF | Số trang:11

75
lượt xem
12
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

CHƯƠNG 1: CƠ SỞ LÍ THUYẾT 1.1 LỊCH SỬ ANDROID Ban đầu, Android là hệ điều hành cho cỏc thiết bị cầm tay dựa trờn lừi Linux do cụng ty Android Inc. (California, Mỹ) thiết kế.

Chủ đề:
Lưu

Nội dung Text: ANDROID _1

  1. ANDROID CHƯƠNG 1: CƠ SỞ LÍ THUYẾT 1.1 LỊCH SỬ ANDROID Ban đầu, Android là hệ điều hành cho cỏc thiết bị cầm tay dựa trờn lừi Linux do cụng ty Android Inc. (California, Mỹ) thiết kế. Cụng ty này sau đú được Google mua lại vào năm 2005 và bắt đầu xơy dựng Android Platform. Cỏc thành viờn chủ chốt tại ở Android Inc. gồm cú: Andy Rubin, Rich Miner, Nick Sears, and Chris White. Hỡnh 1-1 Android timeline Và sau tiếp, vào cuối năm 2007, thuộc về Liờn minh Thiết bị Cầm tay Mú Nguồn mở (Open Handset Alliance) gồm cỏc thành viờn nổi bật trong ngành viễn thụng và thiết bị cầm tay như: Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,… Mục tiờu của Liờn minh này là nhanh chúng đổi mới để đỏp ứng tốt hơn cho nhu cầu người tiờu dựng và kết quả đầu tiờn của nú chớnh là nền tảng Android. Android được thiết kế để phục vụ nhu cầu của cỏc nhà sản xuất thiết, cỏc nhà khai thỏc và cỏc lập trỡnh viờn thiết bị cầm tay. Phiờn bản SDK lần đầu tiờn phỏt hành vào thỏng 11 năm 2007, húng T-Mobile cũng cụng bố chiếc điện thoại Android đầu tiờn đú là chiếc T-Mobile G1, chiếc smartphone đầu
  2. tiờn dựa trờn nền tảng Android. Một vài ngày sau đú, Google lại tiếp tục cụng bố sự ra mắt phiờn bản Android SDK release Candidate 1.0. Trong thỏng 10 năm 2008, Google được cấp giấy phộp mú nguồn mở cho Android Platform. Khi Android được phỏt hành thỡ một trong số cỏc mục tiờu trong kiến trỳc của nỳ là cho phộp cỏc ứng dụng cú thể tương tỏc được với nhau và cú thể sử dụng lại cỏc thành phần từ những ứng dụng khỏc. Việc tỏi sử dụng khụng chỉ được ỏp dụng cho cho cỏc dịch vụ mà nú cũn được ỏp dụng cho cả cỏc thành phần dữ liệu và giao diện người dựng. Vào cuối năm 2008, Google cho phỏt hành một thiết bị cầm tay được gọi là Android Dev Phone 1 cú thể chạy được cỏc ứng dụng Android mà khụng bị ràng buộc vào cỏc nhà cung cấp mạng điện thoại di động. Mục tiờu của thiết bị này là cho phộp cỏc nhà phỏt triển thực hiện cỏc cuộc thớ nghiệm trờn một thiết bị thực cú thể chạy hệ điều hành Android mà khụng phải ký một bản hợp đồng nào. Vào khoảng cựng thời gian đú thỡ Google cũng cho phỏt hành một phiờn vản vỏ lỗi 1.1 của hệ điều hành này. Ở cả hai phiờn bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đũi hỏi cỏc thiết bị phải sử dụng bàn phớm vật lý. Android cố định vấn đề này bằng cỏch phỏt hành SDK 1.5 vào thỏng Tư năm 2009, cựng với một số tớnh năng khỏc. Chẳng hạn như nõng cao khả năng ghi õm truyền thụng, vật dụng, và cỏc live folder. 1.2 DELVING VỚI MÁY ẢO DALVIK Dalvik là mỏy ảo giỳp cỏc ứng dụng java chạy được trờn cỏc thiết bị động Android. Nú chạy cỏc ứng dụng đú được chuyển đổi thành một file thực thi Dalvik (dex). Định dạng phự hợp cho cỏc hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý. Dalvik đú được thiết kế và viết bởi Dan Bornstein, người đú đặt tờn cho nú sau khi đến thăm một ngụi làng đỏnh cỏ nhỏ cú tờn là Dalvớk ở đảo Eyjafjửrður, nơi mà một số tổ tiờn của ụng sinh sống. Từ gỳc nhỡn của một nhà phỏt triển, Dalvik trụng giống như mỏy ảo Java (Java Virtual Machine) nhưng thực tế thỡ hoàn toàn khỏc. Khi nhà phỏt triển viết một ứng dụng dành cho Android, anh ta thực hiện cỏc đoạn mú trong mụi trường Java. Sau đú, nú sẽ được biờn dịch sang cỏc bytecode của Java, tuy nhiờn để thực thi được ứng dụng này trờn Android thỡ nhà phỏt triển phải thực thi một cụng cụ cỳ tờn là dx. Đơy là cụng cụ dựng để chuyển đổi bytecode sang một dạng gọi là dex bytecode. "Dex" là từ viết tắt của "Dalvik executable" đúng vai trũ như cơ chế ảo thực thi cỏc ứng dụng Android. 1.3 KIẾN TRÚC CỦA ANDROID Mụ hỡnh sau thể hiện một cỏch tổng quỏt cỏc thành phần của hệ điều hành Android. Mỗi một phần sẽ được đặc tả một cỏch chi tiết dưới đơy.
  3. Hỡnh 1-2 Cấu trỳc stack hệ thống Android 1.3.1 Tầng ứng dụng Android được tớch hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser, camera, Phone,… Tất cả cỏc ứng dụng chạy trờn hệ điều hành Android đều được viết bằng Java. 1.3.2 Application framework Bằng cỏch cung cấp một nền tảng phỏt triển mở, Android cung cấp cho cỏc nhà phỏt triển khả năng xõy dựng cỏc ứng dụng cực kỳ phong phỳ và sỏng tạo. Nhà phỏt triển được tự do tận dụng cỏc thiết bị phần cứng, thụng tin địa điểm truy cập, cỏc dịch vụ chạy nền, thiết lập hệ thống bỏo động, thờm cỏc thụng bỏo để cỏc thanh trạng thỏi, và nhiều, nhiều hơn nữa. Nhà phỏt triển cú thể truy cập vào cỏc API cựng một khuụn khổ được sử dụng bởi cỏc ứng dụng lừi. Cỏc kiến trỳc ứng dụng được thiết kế để đơn giản húa việc sử dụng lại cỏc thành phần; bất kỳ ứng dụng cú thể xuất bản khả năng của mỡnh và ứng dụng nào khỏc sau đú cú thể sử dụng những khả năng (cú thể hạn chế bảo mật được thực thi bởi khuụn khổ). Cơ chế này cho phộp cỏc thành phần tương tự sẽ được thay thế bởi người sử dụng. Cơ bản tất cả cỏc ứng dụng là một bộ cỏc dịch vụ và cỏc hệ thống, bao gồm: ó Một tập hợp rất nhiều cỏc View cú khả năng kế thừa lẫn nhau dựng để thiết kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,… ó Một “Content Provider” cho phộp cỏc ứng dụng cú thể truy xuất dữ liệu từ cỏc ứng dụng khỏc (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa cỏc ứng dụng đú. ó Một “Resource Manager” cung cấp truy xuất tới cỏc tài nguyờn khụng phải là mú nguồn, chẳng hạn như: localized strings, graphics, and layout files. ó Một “Notifycation Manager” cho phộp tất cả cỏc ứng dụng hiển thị cỏc custom alerts trong status bar.
  4. Activity Maanager được dựng để quản lý chu trỡnh sống của ứng dụng và điều hướng cỏc activity. 1.3.3 Library Android bao gồm một tập hợp cỏc thư viờn C/C++ được sử dụng bởi nhiều thành phần khỏc nhau trong hệ thống Android. Điều này được thể hiện thụng qua nền tảng ứng dụng Android. Một số cỏc thư viện cơ bản được liệt kờ dưới đõy: ó System C library: a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices. ó Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG ó Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị ó LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view. ó SGL - the underlying 2D graphics engine. ó 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer. ó FreeType - bitmap and vector font rendering. ó SQLite - a powerful and lightweight relational database engine available to all applications. 1.3.4 Android Runtime Android bao gồm một tập hợp cỏc thư viện cơ bản mà cung cấp hầu hết cỏc chức năng cú sẵn trong cỏc thư viện lừi của ngụn ngữ lập trỡnh Java. Tất cả cỏc ứng dụng Android đều chạy trong tiến trỡnh riờng. Mỏy ảo Dalvik đú được viết để cho một thiết bị cú thể chạy nhiều mỏy ảo hiệu quả. Cỏc VM Dalvik thực thi cỏc tập tin thực thi Dalvik (dex). Định dạng được tối ưu húa cho bộ nhớ tối thiểu. VM là dựa trờn register-based, và chạy cỏc lớp đú được biờn dịch bởi một trỡnh biờn dịch Java để chuyển đổi thành cỏc định dạng dex. Cỏc VM Dalvik dựa vào nhõn Linux cho cỏc chức năng cơ bản như luồng và quản lý bộ nhớ thấp. 1.3.5 Linux kernel Android dựa trờn Linux phiờn bản 2.6 cho hệ thống dịch vụ cốt lừi như security, memory management, process management, network stack, and driver model. Kernel Linux hoạt động như một lớp trừu tượng húa giữa phần cứng và phần cũn lại của phần mềm stack. 1.4 ANDROID EMULATOR
  5. Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT). Cỏc Android coder sẽ cần phải sử dụng cụng cụ IDE (Integrated Development Enveronment) này để phỏt triển, debugging và testing cho ứng dụng. Tuy nhiờn, cỏc coder cũng cú thể khụng cần phải sử dụng IDE mà thay vào đú là sử dụng command line để biờn dịch và tất nhiờn là vẫn cú Emulator như thường. Android Emulator được trang bị đầy đủ hầu hết cỏc tớnh năng của một thiết bị thật. Tuy nhiờn, một số đú bị giới hạn như là kết nối qua cổng USB, camera và video, nghe phone, nguồn điện giả lập và bluetooth. Android Emulator thực hiện cỏc cụng việc thụng qua một bộ xử lý mú nguồn mở, cụng nghệ này được gọi là QEMU (http://bellard.org/qemu/) được phỏt triển bởi Fabrice Bellard. Hỡnh 1-3 Android emulator 1.5 CÁC THÀNH PHẦN TRONG MỘT ANDROID PROJECT 1.5.1. AndroidManifest.xml Trong bất kỡ một project Android nào khi tạo ra đều cú một file AndroidManifest.xml, file này được dựng để định nghĩa cỏc screen sử dụng, cỏc permission cũng như cỏc theme cho ứng dụng. Đồng thời nú cũng chứa thụng tin về phiờn bản SDK cũng như main activity sẽ chạy đầu tiờn. File này được tự động sinh ra khi tạo một Android project. Trong file manifest bao giờ cũng cú 3 thành phần chớnh đú là: application, permission và version. Dưới đơy là nội dung của một file AndroidManifest.xml
  6. Application Thẻ , bờn trong thẻ này chứa cỏc thuộc tớnh được định nghĩa cho ứng dụng Android như: ỉ android:icon = “drawable resource” à Ở đơy đặt đường dẫn đến file icon của ứng dụng khi cài đặt. VD: android:icon = “@drawable/icon”. ỉ android:name = “string” à thuộc tớnh này để đặt tờn cho ứng dụng Android. Tờn này sẽ được hiển thị lờn màn hỡnh sau khi cài đặt ứng dụng. ỉ android:theme = “drawable theme” à thuộc tớnh này để đặt theme cho ứng dụng. Cỏc theme là cỏc cỏch để hiển thị giao diện ứng dụng. Ngoài ra cũn nhiều thuộc tớnh khỏc… Permission Bao gồm cỏc thuộc tớnh chỉ định quyền truy xuất và sử dụng tài nguyờn của ứng dụng. Khi cần sử dụng một loại tài nguyờn nào đú thỡ trong file manifest của ứng dụng cần phải khai bỏo cỏc quyền truy xuất như sau: SDK version Thẻ xỏc định phiờn bản SDK được khai bỏo như sau: . Ở đőy chỉ ra phiờn bản SDK nhỏ nhất mà ứng dụng hiện đang sử dụng. 1.5.2. File R.java File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để quản lý cỏc thuộc tớnh được khai bỏo trong file XML của ứng dụng và cỏc tài nguyờn hỡnh ảnh.
  7. Mú nguồn của file R.java được tự động sinh khi cú bất kỡ một sự kiện nào xảy xa làm thay đổi cỏc thuộc tớnh trong ứng dụng. Chẳng hạn như, bạn kộo và thả một file hỡnh ảnh từ bờn ngoài vào project thỡ ngay lập tức thuộc tớnh đường dẫn đến file đú cũng sẽ được hỡnh thành trong file R.java hoặc xoỏ một file hỡnh ảnh thỡ đường dẫn tương ứng đến hỡnh ảnh đú cũng tự động bị xoỏ. Cú thể núi file R.java hoàn toàn khụng cần phải đụng chạm gỡ đến trong cả quỏ trỡnh xừy dựng ứng dụng. Dưới đơy là nội dung của một file R.java: /* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */ package dtu.k12tpm.pbs.activity; public final class R { public static final class array { public static final int array_timeout=0x7f050000; } public static final class attr { } public static final class drawable { public static final int add=0x7f020000; public static final int backup_icon=0x7f020001; public static final int checkall=0x7f020002; } public static final class id { public static final int Button01=0x7f070006; public static final int Button02=0x7f070007; public static final int CheckBox01=0x7f070017; } public static final class layout { public static final int contact_list=0x7f030000; public static final int content_sender=0x7f030001; public static final int friend_list=0x7f030002; } public static final class menu { public static final int context_menu=0x7f060000; public static final int menu_options=0x7f060001; public static final int options_menu=0x7f060002; }
  8. public static final class string { public static final int app_name=0x7f040001; public static final int context_menu_item_delete=0x7f04000b; public static final int context_menu_item_edit=0x7f04000a; } } 1.6 CHU KỲ ỨNG DỤNG ANDROID Một tiến trỡnh Linux gỳi gọn một ứng dụng Android đú được tạo ra cho ứng dụng khi codes cần được run và sẽ cũn chạy cho đến khi: ỉ Nỳ khụng phụ thuộc. ỉ Hệ thống cần lấy lại bộ nhớ mà nỳ chiếm giữ cho cỏc ứng dụng khỏc Một sự khỏc thường và đặc tớnh cơ bản của Android là thời gian sống của tiến trỡnh ứng dụng khụng được điều khiển trực tiếp bới chớnh nú. Thay vào đú, nú được xỏc định bởi hệ thống qua một kết hợp của: ỉ Những phần của ứng dụng mà hệ thống biết đang chạy ỉ Những phần quan trọng như thế nào đối với người dựng ỉ Bao nhiờu vựng nhớ chiếm lĩnh trong hệ thống 1.7.1. Chu kỳ sống thành phần Cỏc thành phần ứng dụng cú một chu kỳ sống, tức là mỗi thành phần từ lỳc bắt đầu khởi tạo và đến thời điểm kết thỳc. Giữa đú, đụi lỳc chỳng cú thể là active hoặc inactive, hoặc là trong trường hợp activies nỳ cỳ thể visible hoặc invisible Hỡnh 1-4 1.7.2. Activity Stack Bờn trong hệ thống cỏc activity được quản lý như một activity stack. Khi một Activity mới được start, nú được đặt ở đỉnh của stack và trở thành activity đang chạy activity trước sẽ ở bờn dưới activity mới và sẽ khụng thấy trong suốt quỏ trỡnh activity mới tồn tại. Nếu người dựng nhấn nỳt Back thỡ activity kết tiếp của stack sẽ di duyển lờn và trở thành active.
  9. Hỡnh 1-5 Activity stack 1.7.3. Cỏc trạng thỏi của chu kỳ sống Hỡnh 1-6 Chu kỳ sống của Activity Một Activity chủ yếu cỳ 3 chu kỳ chớnh sau: ỉ Active hoặc running: Khi Activity là được chạy trờn màn hỡnh. Activity này tập trung vào những thao tỏc của người dựng trờn ứng dụng. ỉ Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người dựng vẫn trụng thấy. Cú nghĩa là một Activity mới ở trờn nú nhưng khụng bao phủ đầy màn hỡnh. Một Activity tạm dừng là cũn sống nhưng cú thể bị kết thỳc bởi hệ thống trong trường hợp thiếu vựng nhớ. ỉ Stopped: Nếu nỳ hoàn toàn bao phủ bởi Activity khỏc. Nỳ vẫn cũn trạng thỏi và thụng tin thành viờn trong nỳ. Người dựng khụng thấy nú và thường bị loại bỏ trong trường hợp hệ thống cần vựng nhớ cho tỏc vụ khỏc.
  10. 1.7.4. Chu kỳ sống của ứng dụng (Application life cycle) Trong một ứng dụng Android cú chứa nhiều thành phần và mỗi thành phần đều cú một chu trỡnh sống riờng. Và ứng dụng chỉ được gọi là kết thỳc khi tất cả cỏc thành phần trong ứng dụng kết thỳc. Activity là một thành phần cho phộp người dựng giao tiếp với ứng dụng. Tuy nhiờn, khi tất cả cỏc Activity kết thỳc và người dựng khụng cũn giao tiếp được với ứng dụng nữa nhưng khụng cú nghĩa là ứng dụng đú kết thỳc. Bởi vỡ ngoài Activity là thành phần cú khả năng tương tỏc người dựng thỡ cũn cỳ cỏc thành phần khụng cỳ khả năng tương tỏc với người dựng như là Service, Broadcast receiver. Cú nghĩa là những thành phần khụng tương tỏc người dựng cú thể chạy background dưới sự giỏm sỏt của hệ điều hành cho đến khi người dựng tự tắt chỳng. 1.7.5. Cỏc sự kiện trong chu kỳ sống của ứng dụng Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống cú thể bỏ thụng tin khỏc của nú từ vựng nhớ bởi việc finish() (gọi hàm finish() của nú), hoặc đơn giản giết tiến trỡnh của nỳ. Khi nỳ được hiển thị lần nữa với người dựng, nú phải được hoàn toàn restart và phục hồi lại trạng thỏi trước. Khi một Activity chuyển qua chuyển lại giữa cỏc trạng thỏi, nỳ phải bỏo việc chuyển của nỳ bằng việc gọi hàm transition. Hỡnh 1-7 Tất cả cỏc phương thức là những múc nối mà bạn cú thể override để làm tương thich cụng việc trong ứng dụng khi thay đổi trạng thỏi. Tất cả cỏc Activity bắt buộc phải cú onCreate() để khởi tạo ứng dụng. Nhiều Activity sẽ cũng hiện thực onPause() để xỏc nhận việc thay đổi dữ liệu và mặt khỏc chuẩn bị dừng hoạt động với người dựng. 1.7.6. Thời gian sống của ứng dụng (Application life time) Bảy phương thức chuyển tiếp định nghĩa trong chu kỳ sống của một Activity. Thời gian sống của một Activity diễn ra giữa lần đầu tiờn gọi onCreate() đến trạng thỏi cuối cựng gọi onDestroy(). Một Activity khởi tạo toàn bộ trạng thỏi toàn cục trong onCreate(), và giải phúng cỏc tài nguyờn đang tồn tại trong onDestroy(). 1.7.7. Thời gian hiển thị của Activity (Visible lifetime) Visible lifetime của một activity diễn ra giữa lần gọi một onStart() cho đến khi gọi onStop(). Trong suốt khoảng thời gian này người dựng cú thể thấy activity trờn màn hỡnh, cỳ nghĩa là nỳ khụng bị foreground hoặc đang tương tỏc với người dựng. Giữa 2 phương thức người dựng cú thể duy trỡ tài nguyờn để hiển thị activity đến người dựng.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2