1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và xây dựng kho ứng dụng trên hệ điều hành android

87 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu và xây dựng kho ứng dụng trên hệ điều hành android
Tác giả Quách Văn Hà
Người hướng dẫn Thầy Đinh Đức Hùng
Trường học Trường Đại Học Hòa Bình
Chuyên ngành Công nghệ thông tin
Thể loại Khóa luận
Năm xuất bản 2023
Thành phố Hòa Bình
Định dạng
Số trang 87
Dung lượng 2,75 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Mục tiêu và nhiệm vụ nghiên cứu (2)
  • 2. Kết quả đạt được (2)
  • 3. Áp dụng vào thực tế (2)
  • 4. Nội dung dự án (2)
  • CHƯƠNG I: CƠ SỞ LÝ THUYẾT (3)
    • 1.1 Lịch sử android (3)
    • 1.2 Lịch Sử Android (3)
    • 1.3 Kiến trúc của Android (4)
      • 1.3.1 Tầng ứng dụng (5)
      • 1.3.2 Application framework (5)
      • 1.3.3 Library (6)
      • 1.3.4 Android Runtime (6)
      • 1.3.5 Linux kernel (6)
    • 1.4 ANDROID EMULATOR (giả lập chạy ANDROID) (7)
    • 1.5 Các thành phần Android (7)
      • 1.5.1 AndroidManifest.xml (7)
        • 1.5.1.1 Application (9)
        • 1.5.1.2 Permission (9)
        • 1.5.1.3 SDK version (10)
      • 1.5.2 Fiel R.java (10)
    • 1.6 CHU KÌ ỨNG DỤNG ANDROID (18)
      • 1.6.1 Chu kì sống của một ứng dụng (18)
      • 1.6.2 Activity Stack (19)
      • 1.6.4 Chu kỳ sống của ứng dụng (21)
      • 1.6.5 Các sự kiện trong Chu kỳ sống của ứng dụng (21)
      • 1.6.6 Thời gian sống của ứng dụng (22)
      • 1.6.7 Thời gian hiển thị của Activity (22)
      • 1.6.8 Các phương thức của chu kỳ sống (22)
    • 1.7 Các thành phần giao diện Android (24)
      • 1.7.1 View (24)
      • 1.7.2 ViewGroup (25)
      • 1.7.3 LinearLayout (25)
      • 1.7.4 FrameLayout (26)
      • 1.7.5 AbsoluteLayout (26)
      • 1.7.6 RelativeLayout (26)
      • 1.7.7 TableLayout (27)
      • 1.7.8 Button (28)
      • 1.7.9 Imagebutton (29)
      • 1.7.10 ImageView (30)
      • 1.7.11 ListView (30)
      • 1.7.12 TextView (31)
      • 1.7.13 EditText (31)
      • 1.7.14 CheckBox (32)
      • 1.7.15 MenuOption (32)
      • 1.7.16 ContextMenu (35)
      • 1.7.17 Quick Search Box(Hộp Thư Tìm Kiếm Nhanh) (36)
      • 1.7.18 Activity và Intent (37)
    • 1.8 Content Provider và Uri (40)
    • 1.9 Background Service (41)
    • 1.10 Telephony (45)
    • 1.11 SQLITE (45)
    • 1.12 Android và WebService (46)
      • 1.12.1 Khái niệm về WebService và Soap (46)
      • 1.12.2 Giới thiệu về XStream (47)
      • 1.12.3 Thao tác với Webservice trong Android (50)
    • 1.13 Hướng dẫn cài đặt Android và Eclipse (53)
      • 1.13.1 Download Android SDK (53)
      • 1.13.2 Tích hợp Android SDK vào Eclipse (54)
      • 1.13.3 Android Virtual Device(Emulator) (55)
  • CHƯƠNG II: PHÂN TÍCH THIẾT KẾ HỆ THỐNG (0)
    • 2.1 Đặt tả bài toán (57)
      • 2.1.1 Ý tưởng thực hiện (57)
      • 2.1.2 Yêu cầu người dùng (57)
      • 2.1.3 Yêu cầu hệ thống (58)
      • 2.1.4 Yêu cầu về dữ liệu (58)
    • 2.2 PHÂN TÍCH (58)
      • 2.2.1 Các chức năng của hệ thống (58)
      • 2.2.2 Phân Tích thiết kế Hệ Thống (58)
  • CHƯƠNG III XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ ĐẠT ĐƯỢC (66)
    • 3.1 Xây dựng cơ sở dữ liệu trên SQLite Administrator (66)
      • 3.1.1 Xây dụng các bảng trong cơ sở dữ liệu (66)
      • 3.1.2 Xây dựng cơ sở dữ liệu trên SQLite Administrator (66)
    • 3.2 Một số hình ảnh DeMo ứng dụng (68)
      • 3.2.1. Biểu tượng của chương trình (68)
      • 3.2.2 Màn hình chào vào hệ thống sử dụng giao diện Dynamic Layout (70)
      • 3.2.3 Giao diện vào hệ thống sử dụng giao diện Dynamic Layout (70)
      • 3.2.5 Học qua video (73)
      • 3.2.6 Ghi chep (74)
      • 3.2.7 Giao diện từ điển (75)
      • 3.2.8 Học qua youtube (76)
      • 3.2.9 Giao diện tác giả (77)
    • 3.3 Xây dựng các Mudule của chương trình-Triển khai và chạy thử trên máy ảo và máy thật (77)
      • 3.3.1 Thiết kế chương trình (77)
      • 3.3.2 Mô tả chi tiết các thành phần hệ thống (78)
      • 3.1.3 Viết chương trình (0)
      • 3.1.4 Triển khai và chạy thử ứng dụng trên máy ảo và máy thật (0)
  • CHƯƠNG IV: KẾT LUẬN-HƯỚNG PHÁT TRIỂN CHƯƠNG TRÌNH (81)
    • 5.1 Kết luận (0)
    • 5.2 Hướng phát triển (0)
  • TÀI LIỆU THAM KHẢO (82)
    • Hinh 2.9 biểu đồ hoạt động xem cong việc (64)
    • Hinh 2.10 biểu đồ hoạt động tìm kiếm công việc (64)

Nội dung

Mục tiêu và nhiệm vụ nghiên cứu

a Mục tiêu nghiên cứu: xây dựng ứng dụng học tiếng anh trên hệ điều hành android b Nhiệm vụ

▪ Đọc tài liệu, nghiên cứu tìm hiểu cách lập trình trên hệ điều hành android

▪ Tìm hiểu cách sử dụng ngôn ngữ Java và các thư viện của android để lập trình ứng dụng

▪ Tìm hiểu các vấn đề liên quan đến việc làm thế nào để xây dụng được một ứng dụng học android

▪ Viết đề cương báo cáo và hoàn thành ứng dụng.

Kết quả đạt được

Xây dựng ứng dụng HocTiengAnh với các tính năng cơ bản như tra từ, từ vựng, học nghe, và học qua YouTube Ứng dụng còn cho phép người dùng đánh dấu và lưu lại các từ cần thiết, đồng thời quản trị dữ liệu một cách hiệu quả với các chức năng thêm, sửa và xóa.

Áp dụng vào thực tế

▪ Ứng dụng có thể cài đặt và chạy trên tất cả các thiết bị chạy hệ điều hành android.

Nội dung dự án

Chương 1 Cơ sở lý thuyết

▪ Giới thiệu tổng quan về đề tài và sự cần thiết của việc nghiên cứu đề tài này, đồng thời cũng nêu lên mục tiêu và hướng tiếp cận

Chương 2 Phân tích thiết kế hệ thống

Chương 3 Xây dựng chương trình và kết quả đạt được

Chương 4 Xây dựng các Module của chương trình-triển khai chạy thử trên máy ảo và máy thật

Chương 5 Kết luận và hướng phát triển

Sinh viên: Quách Văn Hà

CƠ SỞ LÝ THUYẾT

Lịch sử android

Android là hệ điều hành dành cho thiết bị di động như điện thoại và máy tính bảng, được phát triển bởi Google dựa trên nền tảng Linux phiên bản 2.6 Hệ điều hành này cung cấp các dịch vụ cốt lõi như bảo mật, quản lý bộ nhớ, quản lý tiến trình, ngăn xếp mạng và mô hình driver Với khoảng 200.000 ứng dụng hiện có và 100.000 ứng dụng đã được đệ trình, Android đã trở thành hệ điều hành di động có môi trường phát triển lớn thứ hai Các nhà phát triển ứng dụng cho Android chủ yếu sử dụng ngôn ngữ Java.

Google công bố hầu hết các mã nguồn của Android theo bản cấp phép Apache

Hệ điều hành Android bao gồm 12 triệu dòng mã; 3 triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu dòng mã Java và 1.75 triệu dòng mã C++.

Lịch Sử Android

Initially, Android was a mobile operating system built on the Linux platform, developed by Android Inc., which included founders Andy Rubin, Rich Miner, Nick Sears, and Chris White.

At the end of 2007, the Open Handset Alliance was formed, comprising prominent members from the telecommunications and mobile device sectors, including Texas Instruments, Broadcom Corporation, Google, HTC, and Intel.

LG, Marvell Technology Group, Motorola…

Liên minh này hướng đến việc nhanh chóng đổi mới nhằm đáp ứng tốt hơn nhu cầu người tiêu dùng, với kết quả đầu tiên là nền tảng Android Android được thiết kế để phục vụ cho các nhà sản xuất, nhà khai thác và lập trình viên thiết bị cầm tay Đây là hệ thống nền tảng phần mềm dành cho điện thoại di động, bao gồm hệ điều hành, các phần tử giao tiếp trung gian (middleware) và các ứng dụng chính (key application).

Phiên bản SDK (Software Development Kit) lần đàu tiên phát hành vào tháng 11-

Vào năm 2007, T-Mobile đã giới thiệu chiếc điện thoại Android đầu tiên mang tên T-Mobile G1, đánh dấu sự ra mắt của smartphone đầu tiên dựa trên nền tảng Android Chỉ vài ngày sau, Google cũng công bố phiên bản Android SDK release Candidate.

Sinh viên: Quách Văn Hà

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 ra mắt, một trong những mục tiêu chính của kiến trúc hệ điều hành này là cho phép các ứng dụng tương tác và tái sử dụng các thành phần từ ứng dụng khác, bao gồm cả dịch vụ, dữ liệu và giao diện người dùng Vào cuối năm 2008, Google phát hành Android Dev Phone 1, cho phép các nhà phát triển thử nghiệm ứng dụng Android mà không cần ràng buộc với nhà cung cấp mạng Cùng thời điểm, Google cũng phát hành phiên bản 1.1 của hệ điều hành Android Trong hai phiên bản 1.0 và 1.1, Android chưa hỗ trợ bàn phím ảo, yêu cầu sử dụng bàn phím vật lý Vấn đề này được khắc phục với việc phát hành SDK 1.5 vào tháng 4 năm 2009 Từ đó, Android đã trải qua nhiều phiên bản khác nhau, từ 1.0 đến 4.3, với các tính năng ngày càng phong phú và hoàn thiện hơn.

Kiến trúc của Android

Mô hình thể hiện tổng quan về 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

Sinh viên: Quách Văn Hà

Hình 1-1 Cấu trúc stack hệ thống android

Android tích hợp nhiều ứng dụng cơ bản như Danh bạ, trình duyệt, máy ảnh và điện thoại Tất cả các ứng dụng chạy trên hệ điều hành Android đều được phát triển bằng ngôn ngữ Java.

Android là một nền tảng phát triển mở, cho phép các nhà phát triển xây dựng ứng dụng đa dạng và sáng tạo Họ có thể tận dụng các thiết bị phần cứng, thông tin vị trí, dịch vụ nền và thiết lập hệ thống báo động để tối ưu hóa trải nghiệm người dùng.

Nhà phát triển có thể truy cập các API (Giao diện lập trình ứng dụng) cùng với khuôn khổ của các ứng dụng lõi, giúp đơn giản hóa việc sử dụng các thành phần Mỗi ứng dụng có thể xuất bản khả năng của mình, cho phép các ứng dụng khác sử dụng những khả năng đó, trong khi vẫn có thể áp dụng các hạn chế bảo mật do khuôn khổ thiết lập Cơ chế này cho phép người dùng thay thế các thành phần tương tự theo nhu cầu.

Sinh viên: Quách Văn Hà

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 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 truy xuất và chia sẻ dữ liệu từ các ứng dụng khác, như danh bạ (Contacts), giúp cải thiện khả năng tương tác và tích hợp 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

Activity manager được dụng để quản lý chu trình sống của ứng dụng và điều hướng các activity

Android là một hệ thống bao gồm nhiều thư viện C/C++ được sử dụng cho các thành phần khác nhau Điều này được thể hiện rõ ràng qua nền tảng ứng dụng Android.

Android sử dụng một tập hợp dữ liệu cơ bản cung cấp hầu hết các chức năng trong thư viện lõi của ngôn ngữ lập trình Java Mỗi ứng dụng Android chạy trong một tiến trình riêng biệt, nhờ vào máy ảo Dalvik được thiết kế để cho phép nhiều máy ảo hoạt động hiệu quả trên một thiết bị Các máy ảo Dalvik thực thi các tệp thực thi dalvik (dex) với định dạng tối ưu hóa cho bộ nhớ tối thiểu Máy ảo này dựa trên kiến trúc register-based và xử lý các lớp đã được biên dịch Java để chuyển đổi thành định dạng dex Ngoài ra, các máy ảo Dalvik còn phụ thuộc vào nhân Linux để thực hiện các chức năng cơ bản như quản lý luồng và bộ nhớ.

Android is built on the Linux kernel version 2.6, which supports essential core services such as security, memory management, process management, network stack, and driver mode The Linux kernel serves as an abstraction layer between the hardware and the rest of the software stack.

Sinh viên: Quách Văn Hà

ANDROID EMULATOR (giả lập chạy ANDROID)

Android SDK (Software Development Kit) và Plugin Eclipse được gọi là Android Developer Tool (ADT), là công cụ thiết yếu cho các lập trình viên Android Công cụ IDE (Integrated Development Environment) này hỗ trợ phát triển, gỡ lỗi và thử nghiệm ứng dụng Ngoài ra, lập trình viên cũng có thể sử dụng dòng lệnh để biên dịch mà không cần IDE, trong khi vẫn có thể sử dụng Emulator như bình thường.

Android Emulator sở hữu hầu hết các tính năng giống như một thiết bị thật, nhưng một số chức năng như kết nối USB, camera, video, nghe gọi, nguồn điện giả lập và Bluetooth bị hạn chế.

Android Emulator sử dụng một bộ xử lý mã nguồn mở để thực hiện các tác vụ, công nghệ này được biết đến với tên gọi QEMU, do Fabrice Bellard phát triển.

Các thành phần Android

In any Android project, the AndroidManifest.xml file is crucial as it defines the screens used, the permissions required, and the themes for the application Additionally, it contains information about the SDK version and specifies the initial activity that will run.

Sinh viên: Quách Văn Hà

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

Ví dụ về một file AndroidManifest.xml

Sinh viên: Quách Văn Hà

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 đườ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 dùng để đặ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 them”: thuộc tính này dùng để đặt them cho ứng dụng Các theme là cách để hiển thị giao diện ứng dụng

Ngoài ra còn nhiều thuộc tính khác

Trong file manifest của ứng dụng, cần khai báo các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên Điều này là cần thiết khi ứng dụng muốn sử dụng một nguồn tài nguyên cụ thể.

Sinh viên: Quách Văn Hà

Quyền quản lý tài khoản:

+ quyền cho phép thực hiện cuộc gọi:

Thẻ xác định phiên bản SDK được khai báo như sau

File R.java được tự động tạo ra khi ứng dụng được khởi tạo, đóng vai trò quan trọng trong việc quản lý các thuộc tính được khai báo trong file XML và tài nguyên hình ảnh của ứng dụng.

File R.java được tự động tạo ra khi có sự kiện thay đổi thuộc tính trong ứng dụng, như việc kéo thả một file hình ảnh vào Project Khi đó, đường dẫn đến file hình ảnh sẽ được thêm vào R.java Ngược lại, nếu xóa file hình ảnh, đường dẫn tương ứng cũng sẽ tự động bị xóa khỏi R.java.

Có thể nói file R.java hoàn toàn không phải đụng chạm gì đến trong quá trình xây dựng ứng dụng

Ví dụ 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

Sinh viên: Quách Văn Hà public final class R { public static final class array { public static final int teo=0x7f060000;

} public static final class attr {

} public static final class dimen {

/** Default screen margins, per the Android Design guidelines

Customize dimensions originally defined in res/values/dimens.xml (such as screen margins) for sw720dp devices (e.g 10" tablets) in landscape here

In Android development, specific dimensions are defined using constants for layout margins and padding The constants include `activity_horizontal_margin` and `activity_vertical_margin`, both set to zero, alongside various padding sizes such as `padding_large`, `padding_medium`, and `padding_small`, which are represented by unique resource IDs These constants facilitate consistent spacing in user interface design.

The drawable class contains several static final integer resources that represent various graphical elements in an application These include identifiers for background menus such as `backgroupmenu` and `backmenu`, as well as specific images like `bgchao`, `eight8`, `five5`, and `four4`, each associated with unique hexadecimal values.

Quách Văn Hà has defined several static final integer constants for resource identifiers, including icons for help, student, search action, and application launcher These identifiers range from giupdo (help) at 0x7f020006 to two2 at 0x7f020013, facilitating the organization and retrieval of various resources within the application.

The provided code snippet defines a public static final class named 'id', which contains a series of integer constants representing unique identifiers for various UI components in an Android application These identifiers include action settings, buttons for different functionalities, and editable text fields, such as 'action_settings', 'button1', 'editText1', and 'formtracuu' Each constant is associated with a hexadecimal value, which is crucial for referencing these elements within the app's layout and functionality.

The article lists various public static final integer identifiers used in a programming context, specifically within a user interface layout These identifiers include 'gioitu' for gender, 'hienketqua' for displaying results, and 'hinhbackmenu' for the background image of the menu Other identifiers represent UI components such as 'imageView1', 'label', and 'listView1', which are essential for structuring the layout Additionally, there are identifiers for navigation and content elements, including 'menugroup', 'noidunginfo', and 'scrollView1', which enhance user interaction and information presentation Overall, these integer constants play a crucial role in defining the visual elements and functionality of the application interface.

The article lists various public static final integer constants used in programming, specifically for UI components in an application Key identifiers include textView3, textView4, textView5, and textView6, each associated with unique hexadecimal values Additional constants such as thantu, tinhtu, tukhoa, and videoView1 are also defined, indicating their roles in the user interface Other identifiers like view1 through view9 and webView1 further illustrate the range of components utilized in the application’s layout.

The layout class defines several static final integer constants representing different layout resources in an Android application Key resources include activity_main, elearning, ghichep, gioithieu, hocnghephatam, and infotracuu, each associated with unique hexadecimal identifiers These constants facilitate the organization and referencing of UI components throughout the application.

The article presents a series of constant integer values used in a programming context, specifically in Android development These constants represent various layout resources, such as `infovanpham`, `list_item`, `manghinhchao`, and others, each associated with unique hexadecimal identifiers The constants include layouts for inputting and editing tasks, displaying authors, and managing video playback This structured approach aids developers in efficiently referencing UI components within their applications.

} public static final class menu { public static final int activity_main=0x7f090000;

} public static final class raw { public static final int camonthoat=0x7f040000; public static final int chaomungok=0x7f040001; public static final int moichonok=0x7f040002; public static final int video4=0x7f040003;

The article presents a public static final class named "string," which includes various integer constants representing different string resources for an application Notable entries include "E_Learning" with a value of 0x7f070005, "action_settings" at 0x7f070001, and "app_name" designated as 0x7f070000 Additional constants include "capnhat_trove" (0x7f07001b), "cham" (0x7f07002d), "chon_video" (0x7f07002e), and "chonbaihoc" (0x7f070025), which are likely used for various functionalities within the app.

The article lists various constants used in an application, including identifiers for tasks such as document reading, email management, and app introduction Key constants include danhsachcongviec for the task list, docvanban for document reading, and email for email functionalities Other notable identifiers are gioithieu_app for app introduction, lamtracnghiem for quiz activities, and ketqua for results The constants also cover user interactions like saving (luu_trove), returning (quaylai), and input fields for user data such as phone number (sodt) and document input (nhapvanban) Each constant is represented by a unique hexadecimal value, indicating its role within the app's functionality.

The article lists various public static final integer constants used in programming, specifically in an Android application context These constants include identifiers for different elements such as "sosanh," "ten," "thantu," and "them," which correspond to specific features or functionalities within the app Other constants like "thoigianthuchien," "thongtin_doan," and "tinhtu" are also defined, indicating their roles in managing time, group information, and emotional states, respectively Additionally, the constants "title_activity_main," "tracuu," "tudongdoccau," "ungdung_hocngoaingu," "video_internet," and "yesterday" suggest various components of the user interface and application capabilities related to language learning and content retrieval.

} public static final class style {

Base application theme, dependent on API level This theme is replaced by AppBaseTheme from res/values-vXX/styles.xml on newer devices

Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to backward-compatibility can go here

Base application theme for API 11+ This theme completely replaces AppBaseTheme from res/values/styles.xml on API 11+ devices

Sinh viên: Quách Văn Hà

API 11 theme customizations can go here

Base application theme for API 14+ This theme completely replaces AppBaseTheme from BOTH res/values/styles.xml and res/values-v11/styles.xml on API 14+ devices

API 14 theme customizations can go here

*/ public static final int AppBaseTheme=0x7f080000;

All customizations that are NOT specific to a particular API-level can go here */ public static final int AppTheme=0x7f080001;

CHU KÌ ỨNG DỤNG ANDROID

Một tiến trình Linux gói gọn trong một ứng dụng Android đã được tạo ra ứng dụng khi code cần đượng Run và sẽ còn chạy cho đến khi:

• 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

1.6.1 Chu kì sống của một ứng dụng

Các thành phần ứng dụng trải qua một chu kỳ sống, bắt đầu từ khi được khởi tạo cho đến khi kết thúc Trong quá trình này, các thành phần có thể ở trạng thái Active hoặc Inactive Nếu ở trạng thái Active, chúng có thể hiển thị (Visible) hoặc không hiển thị (Invisible).

Sinh viên: Quách Văn Hà

Hình 1.3 Chu kỳ sống của thành phần ứng dụng

Trong các hệ thống quản lý activity, các activity được tổ chức như một ngăn xếp (stack) Khi một activity mới được khởi chạy, nó sẽ được đặt ở đỉnh của ngăn xếp và trở thành activity đang hoạt động, trong khi activity trước đó sẽ nằm dưới activity mới và không thể nhìn thấy cho đến khi activity mới kết thúc.

Nếu người dùng nhấn nút Back thì activity kế tiếp của Stack sẽ di chuyển lên và trở thành Active

Sinh viên: Quách Văn Hà 20 Lớp: 510CNT

1.6.3 Các trạng thái của chu kì sống

Hình 1.5 Chu kỳ sống của Activity

Một Activity chủ yếu có 3 Chu kỳ sau:

• Activity Running: khi Activity đượ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

Một Activity sẽ được tạm dừng khi không có người dùng tương tác, nhưng vẫn hiển thị trên màn hình Điều này có nghĩa là một Activity mới có thể xuất hiện, nhưng không chiếm toàn bộ màn hình Mặc dù Activity tạm dừng vẫn còn hoạt động, nó có thể bị hệ thống kết thúc nếu thiếu bộ nhớ.

Sinh viên: Quách Văn Hà

Khi một hoạt động khác hoàn toàn chiếm lĩnh, trạng thái và thông tin thành viên của nó vẫn được giữ nguyên, nhưng người dùng không thể nhìn thấy Trong trường hợp hệ thống cần bộ nhớ cho các tác vụ khác, nó thường bị loại bỏ.

1.6.4 Chu kỳ sống của ứng dụng

Trong một ứng dụng Android, mỗi thành phần đều có chu trình sống riêng, và ứng dụng chỉ kết thúc khi tất cả các thành phần đều ngừng hoạt động Activity là một thành phần quan trọng cho phép người dùng tương tác 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 tương tác, điều đó không có nghĩa là ứng dụng đã hoàn toàn kết thúc.

Trong hệ thống Android, Activity là thành phần chính cho phép người dùng tương tác, trong khi các thành phần khác như Service và Broadcast Receiver không có khả năng tương tác trực tiếp với người dùng Những thành phần này có thể hoạt động ngầm trong nền dưới sự giám sát của hệ điều hành và chỉ dừng lại khi người dùng quyết định tắt chúng.

1.6.5 Các sự kiện trong Chu kỳ sống của ứng dụng

Khi một Activity tạm dừng hoặc dừng hẳn, hệ thống có thể xóa thông tin của nó từ bộ nhớ bằng cách gọi hàm finish() hoặc kết thúc tiến trình Khi Activity được hiển thị lại cho người dùng, nó cần phải khởi động lại hoàn toàn và phục hồi trạng thái trước đó Để thông báo việc chuyển đổi giữa các trạng thái, Activity phải gọi hàm transition.

Sinh viên: Quách Văn Hà

Tất cả các phương thức mà bạn có thể ghi đè để thực hiện công việc tương thích trong ứng dụng khi thay đổi trạng thái đều rất quan trọng Mỗi Activity cần có phương thức onCreate() để khởi tạo ứng dụng, trong khi nhiều Activity cũng sử dụng onPause() để xử lý việc thay đổi dữ liệu và chuẩn bị dừng hoạt động với người dùng.

1.6.6 Thời gian sống của ứng dụng

Trong chu kỳ sống của một Activity, có bảy phương thức chuyển tiếp định nghĩa Thời gian sống của Activity bắt đầu từ lần đầu tiên gọi onCreate() cho đến khi gọi onDestroy() để kết thúc Trong phương thức onCreate(), Activity khởi tạo toàn bộ trạng thái toàn cục, trong khi onDestroy() đảm bảo giải phóng các tài nguyên đang tồn tại.

1.6.7 Thời gian hiển thị của Activity

Thời gian hiển thị của một Activity diễn ra từ khi gọi onStack() cho đến khi gọi onStop() Trong khoảng thời gian này, người dùng có thể nhìn thấy activity trên màn hình, tức là nó đang ở chế độ foreground và tương tác với người dùng Giữa hai phương thức này, người dùng có thể duy trì tài nguyên để tiếp tục hiển thị activity.

1.6.8 Các phương thức của chu kỳ sống

Sinh viên: Quách Văn Hà

• Được gọi khi Activity lần đầu tiên được tạo

• Ở đây bạn là tất cả các cài đặt tĩnh—tạo các View, kết nối dữ liệu…

• Phương thức này gửi qua một đối tượng gọi là Bundle chứa đựng trạng thái trước của Activity

• Luôn theo sau bởi onStart()

• Được gọi sau khi Activity đã được dừng, chỉ một khoảng đang khởi động lần nữa(stared again)

• Luôn theo sau bởi onStart()

• Được gọi sau khi Activity Visible với người dùng

• Theo sau bởi onResume() nếu Activity đến trạng thái foreground hoặc onStop() nếu nó trở nên ẩn

• Được gọi trước khi Activity tương tác với người dùng

• Tại thời điểm này activity ở trên đỉnh của stack activity

• Luôn theo sau bởi onPause()

• Được gọi khi hệ thống đang resuming activity khác

• Phương thức này là điển hình việc giữ lại không đổi dữ liệu

• Nó nên được diễn ra nhanh chóng bởi vì activity kế tiếp không được resumed ngay khi nó trở lại

• Theo sau bởi onResume nếu activity trở về từ trước, hoặc bởi onStop() nếu nó ở trên visible với người dùng

• Trạng thái của activity có thể bị giết bởi hệ thống

• Được gọi khi activity không thuộc tầm nhìn của người dùng

Sinh viên: Quách Văn Hà

• Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác đang được resumed và bao phủ nó

• Được theo sau bởi onRestart() nếu activity đang đỡ lại để tương tác với người dùng, hoặc onDestroy() nếu activity đó đang bỏ

• Trạng thái của activity có thể bị giết bởi hệ thống

• Được gọi trước khi activity bị hủy

• Đó là lần gọi cuối cùng mà activity được nhận

• Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm thời đang bị hủy diệt đêt tiết kiệm vùng nhớ

• Bạn có thể 2 kịch bản với vói phương thúc isFinishing()

Trạng thái của activity có thể được đặt bởi hệ thống.

Các thành phần giao diện Android

Trong ứng dụng Android, giao diện người dùng được cấu thành từ các đối tượng View và ViewGroup, với nhiều loại khác nhau Mỗi loại đều kế thừa từ lớp View và tất cả đều được gọi chung là Widget.

Tất cả các Widget đều chia sẻ những thuộc tính cơ bản như vị trí, nền, kích thước và lề, và những thuộc tính này được thể hiện trong một đối tượng View.

Trên nền tảng Android, các màn hình được tổ chức theo cấu trúc phân cấp Mỗi màn hình bao gồm các bố cục và widget được sắp xếp theo thứ tự Để hiển thị một màn hình, trong hàm onCreate của mỗi Activity, cần gọi hàm setContentView(R.layout.main); hàm này sẽ tải giao diện từ file XML và chuyển đổi thành mã bytecode.

Sinh viên: Quách Văn Hà

Hình 1.7 cấu trúc một giao diện ứng dụng android

ViewGroup là một loại View, cụ thể hơn, nó là các Widget layout được sử dụng để sắp xếp các đối tượng khác trên một màn hình.

LinearLayout được dùng để bố trí các thành phần giao diện theo chiều ngang hoạc chiều dọc nhưng trên một line mà không có xuống dòng

LinearLayout giúp các thành phần bên trong không bị ảnh hưởng bởi kích thước màn hình Các thành phần trong LinearLayout được sắp xếp theo tỷ lệ cân xứng dựa trên các ràng buộc giữa chúng.

Hình 1.8 bố trí các widget trong một LinearLayout

Sinh viên: Quách Văn Hà

FrameLayout được bố trí các đối tượng theo kiểu giống như một Layer trong

Trong Photoshop, các đối tượng trong Layer dưới sẽ bị che khuất bởi các đối tượng trong Layer trên FrameLayer thường được sử dụng để tạo ra các đối tượng trong khung hình bên ngoài, ví dụ như nút hình ảnh liên hệ.

Hình 1.9 Bố trí cá widget sử dụng FrameLayout

Layout này được sử dụng để bố trí các Widget vào một vị trí bất khì trong

Layout dựa vào tọa độ x, y thường ít được sử dụng do vị trí của các đối tượng luôn cố định, không thể điều chỉnh tỷ lệ khoảng cách giữa chúng Khi chuyển ứng dụng sang màn hình có kích thước khác với thiết kế ban đầu, vị trí của các đối tượng sẽ không còn chính xác.

Bố trí này cho phép sắp xếp các Widget theo trục đối xứng, có thể là ngang hoặc dọc Để đảm bảo vị trí chính xác, các Widget cần được xác định với một mố ràng buộc cụ thể.

Widget khác Các ràng buộc này là các ràng buộc trái, phải, trên dưới so với Widget

RelativeLayout giúp xác định vị trí của các thành phần giao diện dựa trên mối quan hệ với các thành phần khác hoặc với Layout cha Điều này cho phép RelativeLayout linh hoạt hơn với kích thước màn hình của thiết bị Ngoài ra, việc sử dụng RelativeLayout còn giúp tiết kiệm tài nguyên và tăng tốc độ xử lý khi tải giao diện.

Hình 1.10 bố trí các Widget sử dụng RelativeLayout

Layout này được áp dụng để thiết kế bảng dữ liệu, giúp bố trí các dữ liệu theo hàng và cột Ví dụ như giao diện của một máy tính đơn giản hoặc danh sách dữ liệu.

Sinh viên: Quách Văn Hà

Hình 1.11 bố trí các Widget sử dụng TableLayout

Là đối tượng được sử dụng nhiều nhất trong hầu hết các ứng dụng Android Để thiết kế môt giao diện Button ta có 2 cách sau

Thuộc tính android:onClick="clickHere" được sử dụng để xử lý sự kiện khi người dùng nhấn vào nút Khi nút được nhấn, phương thức "touchMe" được khai báo trong thuộc tính sẽ được gọi Nếu phương thức "touchMe" chưa được định nghĩa trong file mã nguồn, sẽ xảy ra một ngoại lệ.

Sinh viên: Quách Văn Hà

“clickHere” sẽ nhận một tham biến là đối tượng View nơi xảy ra sự kiện, và đối tượng View này có thể được ép kiểu trực tiếp sang kiểu Button vì thực chất nó là một button.

Ví dụ trong file mã nguồn khai báo như sau

Khi không cần tùy chỉnh một widget, chúng ta có thể tránh việc sử dụng mã code Tuy nhiên, trong một số tình huống nhất định, như trong game, việc tùy chỉnh các widget như nút menu và nút điều khiển là cần thiết để phù hợp với bối cảnh sử dụng.

Ví dụ để khai báo một button trong code ta làm như sau

To create a custom widget in Android, you need to define a new class that extends the desired widget class Within this class, you can override the draw method to render the widget as a canvas For example, you can create a button using the code `Button cmdButton = new Button(this); cmdButton.setText("ClickHere"); cmdButton.setOnClickListener( );`.

Ví du canvas.drawPicture(Picture.createFormStream(…));

Tương tự như Button, ImageButton chỉ có thêm một thuộc tính android:src=”@drawable/icon” để thêm hình ảnh và không có thuộc tính Text

Sinh viên: Quách Văn Hà

ImageView được dùng để thể hiện một hình ảnh Nó cũng giống như ImageButton, chỉ khác là k có hình dáng của Button

Ví dụ: ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.icon);

Ngày đăng: 31/08/2023, 11:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w