Hình 3-16: Các thành phần và cơ chế giao tiếp của ứng dụng client Android

Một phần của tài liệu Công nghệ định vị và ứng dụng android cho mạng địa xã hội (Trang 40 - 42)

hành cho di động Android. Thiết kế đưa ra cần tính toán đến đặc trưng của hệ điều hành này, để có thể khai thác hiệu quả các tính năng hệ điều hành cung cấp. Hình 3- 9 mô tả các thành phần trong phần mềm theo phân tầng từ trên xuống như sau:

Hình 3-16: Các thành phần và cơ chế giao tiếp của ứng dụng client Android

• Presentation

o Gồm các giao diện (View) tương tác với người dùng. Các View có dạng XML và được xây dựng từ các phần tử giao diện (các control) trong thư viện của Android, như ListView, TextView, Spinner, GroupView, Map view

o Trong Android, logic chuyển đổi giữa các giao diện khác nhau trong phần mềm được điều khiển bởi các Activity; có thể hiểu là phần mã nguồn Java bên dưới của từng View.

• Business

o Gồm các class Controller điều khiển các View và phần tử giao diện control.

o Về mặt chức năng, các class business thực hiện công việc tương tự các Activity.

• Service

o Là các thread chạy ngầm thực hiện kết nối tới Server ( ở đây là server Foloyu hoặc google server)

o Các thao tác chính sử dụng dịch vụ được cung cấp bởi các servlet của Foloyu hoặc các API của Google server.

o Các thao tác trên chủ yếu được dùng khi có nhu cầu cập nhật dữ liệu. Dữ liệu sau khi tải về, được chuyển tới các XML/KML handler. • DataAccess: Gồm các thành phần thực hiện các tương tác với dữ liệu thô

được lấy về từ service. Các thành phần này thực hiện việc trích rút các thông tin cần thiết cho từng thành phần theo giao diện dữ liệu đã được quy ước từ trước với phía server, rồi đóng gói các dữ liệu này thành các object java bean để từ đó các thành phần khác trong ứng dụng có thể sử dụng được.

o XML/KML handler: bao gồm các class chịu trách nhiệm trích xuất thông tin (parse) từ các file xml hoặc kml nhận được từ server. Các class này đều được thừa kế từ lớp DefaultHandler. Mỗi khi một file XML được trả về, các hàm trong lớp này sẽ tự động thực hiện thao tác parse, ta chỉ việc cài đặt các thao tác parse tương ứng với giao diện file XML tương ứng của mình.

o Java Bean: bao gồm các lớp java bean chứa dữ liệu sau khi đã được XML handler parse. Các lớp này chỉ bao gồm các trường và các phương thức get/set.

o Utils: chứa các lớp tiện ích cho việc thực thi các thao tác với dữ liệu, chủ yếu bao gồm các thao tác với mảng, các toán tử tính toán tọa độ được cài đặt riêng để tiện cho việc tính toán.

1.9.2. Thiết kế thành phần giao tiếp với server

Mỗi một ứng dụng trong hệ điều hành Android là một tập hợp các Activity, được điều phối bởi một hệ thống lập lịch riêng trong hệ điều hành. Các ứng dụng khác nhau có thể gọi tới Activity của ứng dụng khác, ta có thể hình dung tầng ứng dụng của Android như là một đại dương, trong đó các activity giống như những hòn đảo nhỏ, mỗi một ứng dụng giống như một quần đảo, quy tụ các activity với nhau. Nhiệm vụ điều phối được giao cho một thành phần trong hệ điều hành. Thành phần này sẽ lắng nghe các phản hồi từ các activity, nếu quá 5s mà activity không phản ứng lại, hệ điều hành sẽ cho rằng activity này chết và lập tức chuyển quyền kiểm soát sang cho activity khác. Các thao tác phải kết nối tới internet thường không biết trước được thời gian đáp ứng là bao nhiêu. Chính vì vậy, ta phải để thao tác kết nối tới Internet này chạy trong một thread khác. Trước khi mô tả làm thế nào để thực hiện việc này, em xin trình bày về Handler trong Android, một đặc trưng của hệ điều hành, giúp cho lập trình viên có thể giao tiếp giữa các thread với nhau.

Handler là một class nằm trong gói android.os, nó cho phép lập trình viên có thể gửi và thao tác các Message và các Runnable object thuộc vào một thread. Khi ta tạo một object của lớp Handler, object này sẽ gắn với thread đó, và kể từ thời điểm đó, object này sẽ chịu trách nhiệm quản lý, nhận, phân phối các Message gửi đến thread đó. Các Thread khác gửi message đến thread này thông qua chính object handler này, và các message này sẽ được đẩy vào hàng đợi và được handler này xử lý lần lượt theo ưu tiên hàng đợi (message đến trước sẽ được thực hiện trước). Xử lý message như thế nào sẽ thông qua hàm Handler.handleMessage(Message msg). Đây là một hàm chưa cài đặt gì, trong khi tạo một object handle, ta sẽ kế thừa class Handle và cài đặt hàm handleMessage này thể thực hiện nhiệm vụ cụ thể trong từng bài toán. Để gửi message giữa các thread, ta sẽ truyền tham biến là object handler này vào thread gửi, rồi gửi message thông qua hàm handler.sendMessage(Message msg). Sau đó, message này sẽ được xếp vào hàng đợi của thread nhận, và được thực hiện trong hàm handlerMessage một cách tuần tự theo danh sách hàng đợi.

Hình 3-17: Mô hình lập trình kết nối Internet trong Android

Một phần của tài liệu Công nghệ định vị và ứng dụng android cho mạng địa xã hội (Trang 40 - 42)

Tải bản đầy đủ (DOC)

(94 trang)
w