DefaultHandler và parse ba mẫu thông tin khác nhau thông qua việc cài đặt các phương thức trừu tượng của lớp này là startDocument(), endDocument(), startElement(String n, String l, String q, Attributes a), endElement(String n, String l, String q). Khi file XML được tải về từ server, các hàm này sẽ được tự động gọi để
thực hiện việc đọc dữ liệu, các dữ liệu được đọc xong sẽ được lưu vào danh sách các List<MyLocation>, List<MyCategory>, List<MyFeed> tương ứng để từ đó, các thành phần khác trong ứng dụng có thể gọi đến để lấy dữ liệu.
1.9.4. Thiết kế giao diện ứng dụng a. Giao diện trong lập trình Android
Mỗi một ứng dụng trong hệ điều hành Android có thể bao gồm các thành phần sau đây:
• Activity: Một “activity” thực hiện một giao diện trực quan để người dùng có thể thao tác. Ví dụ một activity có thể hiện ra một list cho người dùng lựa chọn. Hay như trong một ứng dụng gửi tin nhắn cần có một activity để hiển thị danh sách các contacts cho người dùng lựa chọn, một activity hiện lên màn hình soạn thảo để viết tin, một activity cho phép người dùng xem lại các tin nhắn cũ... Một ứng dụng Android có thể chứa một hoặc nhiều activity. Mỗi một activity được cung cấp một cửa sổ để thao tác trên đó.
• Service: Một service không có một giao diện trực quan. Nó chạy ở nền trong một thời gian không xác định. Mỗi một service thừa kế từ lớp cơ sở Service. Một ví dụ để có thể hiểu về service là ứng dụng music player. Ứng dụng có thể có nhiều activity cho phép người dùng lựa chọn bài hát hay bắt đầu chơi nhạc. Tuy nhiên bộ phận phát nhạc lại không được được điều khiển bởi activity bởi người dùng mong muốn nhạc vẫn được chơi khi người dùng rời khỏi giao diện của ứng dụng và chuyển sang một công việc khác. Khi đó activity của ứng dụng cần khởi động một service điều khiển việc phát nhạc ở nền. Như vậy hệ thống có thể duy trì service điều khiển việc phát nhạc ngay cả khi người dùng chuyển sang một giao diện khác.
• Broadcast Receiver: Broadcast Receiver là một thành phần không làm gì ngoài việc nhận và hưởng ứng lại những thông báo (broadcasts) được ban ra. Rất nhiều thông báo bắt nguồn từ trong mã của hệ thống như thông báo timezone thay đổi, pin yếu, có cuộc gọi đến... Ngoài ra một ứng dụng cũng có thể khởi tạo các broadcasts nhằm thông báo cho các ứng dụng khác các thông tin cần thiết. Một ứng dụng có thể có tùy ý số lượng các Broadcasts Receiver để hưởng ứng lại các thông báo tương ứng mà nó cho là quan trọng. Tất cả các receiver đó đều thừa kế từ lớp cơ sở BroadcastsReceiver. Broadcasts Receiver không thể hiện giao diện trực quan. Tuy nhiên nó có thể khởi động một activity hưởng ứng lại thông tin nhận được hoặc có thể sử dụng lớp Notification Manager để cảnh báo người dùng.
• Content Provider: Content Provider là thành phần làm cho tập dữ liệu của ứng dụng có thể được sử dụng bởi một ứng dụng khác. Content Provider
thừa kế từ lớp cơ sở ContentProvider để thực hiện một tập các phương thức chuẩn cho phép các ứng dụng lấy hoặc lưu trữ các kiểu dữ liệu mà nó điều khiển. Tuy nhiên các ứng dụng không nên gọi trực tiếp các hàm này. Thay vào đó chúng sử dụng đối tượng ContenResolver và các phương thức của chúng.
Phần giao diện của chương trình trong Android chính là phần Activity của 1 ứng dụng. Một activity có thể hiểu như là một cửa sổ (window) của các ứng dụng trên desktop. Các Activity sẽ quản lý hiển thị GUI, các giao diện GUI này (buttons, label …) được định nghĩa trong file XML chứa trong folder resources. Folder resources chứa định nghĩa các view, các style, màu sắc xuất hiện của các view, tất cả được định nghĩa trong các file xml. Các file định nghĩa menu được đặt trong folder menu, định nghĩa màu sắc, styles được chứa trong thư mục values, các file định nghĩa các button, các textview… được định nghĩa trong các file ở thư mục layout. Việc phân chia như thế này, giúp cho việc lập trình trở
nên dễ dàng hơn. Hình 3-19: Mô hình lập trình giao
diện trong Android