Tải bản đầy đủ (.pdf) (45 trang)

Lập trình java cho thiết bị di động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (761.51 KB, 45 trang )


ኼ¿
̴ͺͺ  ͳ
BÀI 1: GIỚI THIỆU VỀ LẬP TRÌNH CHO ĐIỆN THOẠI DI ĐỘNG VÀ
CÔNG CỤ J2ME WIRELESS TOOLKIT
Bài viết này giúp bạn làm quen với việc lập trình trên điện thoại di động.
Khi sử dụng chiếc điện thoại hàng ngày, có thể bạn vẫn nghĩ lập trình cho chiếc
điện thoại của mình là một việc không dễ dàng và chỉ có những chuyên gia mới
làm được. Loạt bài viết về lập trình trên điện thoại di
động sắp tới sẽ hướng dẫn
bạn từng bước cách “vọc” để tự viết những ứng dụng và trò chơi đơn giản cho
mình.
Khi đi vào thế giới của lập trình cho ĐTDĐ, bạn sẽ bắt gặp những thuật ngữ
mới như J2ME, CLDC, Configuration, Profile, . Những thuật ngữ này có thể lạ
với bạn nhưng chúng ta sẽ từ từ làm quen với chúng. Còn bi giờ hãy sắn tay áo cài
đặt phần mềm trước đã.
Những phần mềm cần chuẩn bị:
Bạn cần chuẩn bị 3 phần mềm sau để bắt đầu, bạn có thể tải về từ Internet hoặc ra
các cửa hàng bán CD để mua về:

Bộ công cụ phát triển của Java (Java 2 Standard Edition – J2SE) phiên bản
1.4.2 hoặc mới hơn. Bạn có thể tải về tại địa chỉ sau:
/>•
J2ME Wireless Toolkit. Đây chính là công cụđể bạn vọc lập trình trên điện
thoại. Bạn có thể download về tại đây:
/>•
Một chương trình soạn thảo mã nguồn Java. Bạn có thể dùng bất kỳ chương
trình soạn thảo văn bản nào cho phép lưu các văn bản không có định dạng
như Notepad, Notepad Plus tại , jEdit tại

ኼ¿


̴ͺͺ  ʹ
. Bạn chú ý là các chương trình có định dạng văn bản
như Microsoft Word không thể dùng để soạn thảo mã nguồn được.
Cài đặt bộ công cụ phát triển của Java:
Đây là bộ công cụ dùng để phát triển các ứng dụng Java. Bạn cần chương trình này
vì bộ J2ME Wireless Toolkit cần nó để có thể chạy được. Ngoài ra nó còn cung
cấp các công cụđể bạn biên dịch các tập tin mã nguồn của bạn. Nếu bạn download
phiên bản JDK 1.4.2_02 thì tên tập tin cài đặt là j2sdk-1_4_2_02-windows-i586-
p.exe (Phiên bản 1.4.x mới nhất là 1.4.2_09) Bạn cài đặt và chấp nhậ
n các giá trị
mặc định. Sau khi cài đặt với các tuỳ chọn mặc định thì trên máy bạn sẽ có thư
mục C:\j2sdk1.4.2_02
Bạn có thể thử là bạn đã cài đặt thành công bằng cách mở cửa sổ DOS và gõ vào:
C:\j2sdk1.4.2_02\bin\java –version
Nếu bạn nhận được kết quả:
java version "1.4.2_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_02-b03)
Java HotSpot(TM) Client VM (build 1.4.2_02-b03, mixed mode)
Nghĩa là bạn đã cài đặt thành công (xem hình dưới)

ኼ¿
̴ͺͺ  ͵
Cài đặt bộ công cụ phát triển trên điện thoại (J2ME Wireless Toolkit)
Bước kế tiếp bạn sẽ cài đặt bộ J2ME Wireless Toolkit, là một bộ công cụ giúp bạn
biên dịch và chạy các ứng dụng trên điện thoại (thường được gọi là ứng dụng
MIDP).
Bạn chạy chương trình j2me_wireless_toolkit-2_2-windows.exe mà bạn đã
tải vềở bước trên để cài đặt. Chương trình cài đặt này sẽ tìm kiếm bộ J2SE SDK
mà bạn vừa cài đặ
t ở trên (nếu trong trường hợp không tìm ra bộ J2SE SDK, bạn

hãy chọn đường dẫn mà bạn đã cài đặt ở bước trước). Chương trình cài đặt mặc
định sẽ cài vào thư mục c:\WTK22 và nó sẽ tạo thêm một số shortcut trong thực
đơn Start của Windows. Bạn chọn menu Start -> All Programs -> J2ME Wireless
Toolkit 2.2 và bạn sẽ thấy những shortcut như hình sau:
Để chạy bộ công cụ này, bạn chọn KToolbar trong thực đơn ở trên, chương trình
KToolbar sẽ chạy lên như
hình sau:

ኼ¿
̴ͺͺ  Ͷ
Trên thanh công cụ của chương trình, bạn hãy chọn Open Project , bạn sẽ thấy
một cửa sổ Open Project hiện lên:
Bạn hãy chọn Games, và nhấn Open Project, sau đó bạn nhấn Run trên thanh công
cụđể chạy ứng dụng mẫu này, và chương trình giả lập điện thoại sẽ chạy lên:

ኼ¿
̴ͺͺ  ͷ
Bạn sẽ thấy 3 trò chơi, trong đó có trò WormGame (Rắn săn mồi) rất quen
thuộc. Bạn dùng chuột nhấn vào các nút trên điện thoại giả lập giống như bạn đang
sử dụng chiếc điện thoại thật của bạn. Bạn chú ý đây chỉ là một điện thoại giả lập
chung chứ không phải một đời điện thoại của bấ
t kỳ nhà sản xuất điện thoại nào
như Samsung hay Nokia. Bạn nhấn chuột lên nút DOWN của điện thoại và nhấn

ኼ¿
̴ͺͺ  ͸
nút SELECT, bạn sẽ chạy được chương trình game Rắn săn mồi quen thuộc như
sau:
Sau khi chơi thử xong, bạn đóng màn hình giả lập lại bằng cách nhấn nút X ở phía
trên bên phải như khi bạn đóng bất kỳứng dụng Windows nào khác. Bây giờ bạn


ኼ¿
̴ͺͺ  ͹
hãy thửđổi sang chạy giả lập trên một điện thoại khác bằng cách chọn trong
combobox Device như hình sau. Ởđây tôi chọn QwertyDevice
Sau đó bạn cũng nhấn nút Run để chạy lại, bạn sẽ thấy điện thoại giả lập khác chạy
ra với cùng ứng dụng trò chơi nhưở trên:
Vậy là bạn đã biết cách dùng công cụ Wireless Toolkit để chạy các ứng dụng mẫu,

ኼ¿
̴ͺͺ  ͺ
trong bài sau bạn sẽ làm quen nhiều hơn với bộ công cụ này cũng như viết ứng
dụng đơn giản đầu tiên. Hẹn gặp lại bạn trong số báo sau.

ኼ¿
̴ͺͺ  ͻ
BÀI 2: SỬ DỤNG BỘ CÔNG CỤ J2ME WIRELESS TOOLKIT ĐỂ VIẾT
ỨNG DỤNG HELLO WORLD ĐẦU TIÊN CỦA BẠN
Trong bài trước bạn đã cài đặt thành công bộ công cụ Wireless Toolkit để
phát triển ứng dụng trên các điện thoại di động hỗ trợ công nghệ Java. Bạn cũng đã
làm quen cách chạy một game mẫu có sẵn bằng chương trình giả lập điện thoại
cũng có trong bộ công cụ Wireless Toolkit. Trong bài viết thứ hai này trong loạt
bài vi
ết về viết ứng dụng và game trên điện thoại di động, bạn sẽđược làm quen
với cách sử dụng chương trình KToolbar trong bộ Wireless Toolkit để viết một
ứng dụng Hello World.
Chắc bạn cũng còn nhớ là trong bài trước, các bạn đã sử dụng chương trình
KToolbar để mở một dự án (project) có sẵn và chạy chúng. Hôm nay bạn sẽ học
cách tự tạo một dự án của riêng bạn và tự viết mộ
t ứng dụng nổi tiếng nhất thế

giới. Đúng vậy, ứng dụng nổi tiếng nhất thế giới chính là ứng dụng Hello World.
Đầu tiên, bạn cần mở chương trình KToolbar bằng cách chọn menu Start -> All
Programs -> J2ME Wireless Toolkit 2.2 -> KToolbar , và chương trình sẽ hiện lên
như sau:

ኼ¿
̴ͺͺ  ͳͲ
Trên thanh công cụ, bạn hãy chọn nút New Project , một cửa sổ New Project sẽ
hiện lên, trong ô Project Name, bạn nhập vào HelloSuite và trong ô MIDlet Class
Name, bạn nhập vào HelloMIDlet (xem hình dưới). Kế tiếp, bạn nhấn vào nút
Create Project.
Một cửa sổ cho phép bạn cấu hình dự án của bạn sẽđược hiện lên như hình sau:

ኼ¿
̴ͺͺ  ͳͳ
Đây là một hộp hội thoại cho phép bạn thay đổi các thông số của dự án. Bạn cũng
chưa cần quan tâm đến các tham số cấu hình này vào thời điểm hiện nay. Các
thông số mặc định này đã thích hợp với đa số các dự án nhỏ, bạn chỉ cần nhấn OK
và bạn đã có trong tay một dự án của riêng mình.
Trên cửa sổ của KToolbar bạn sẽ thấy các thông tin sau:
Creating project "HelloSuite"
Place Java source files in "C:\soft\WTK22\apps\HelloSuite\src"
Place application resource files in "C:\soft\WTK22\apps\HelloSuite\res"
Place application library files in "C:\soft\WTK22\apps\HelloSuite\lib"
Settings updated
Project settings saved

ኼ¿
̴ͺͺ  ͳʹ
Các bạn chú ý là trên máy của tôi thì bộ Wireless Toolkit được cài vào thư mục

C:\soft\WTK22 , còn trên máy bạn thì thông tin hiển thị có thể sẽ khác đi tuỳ vào
thư mục bạn cài đặt bộ Wireless Toolkit. Bạn hãy dùng Windows Explorer để xem
cấu trúc thư mục cũng như các tập tin mà KToolbar vừa tạo ra cho bạn (xem hình
dưới)
Các bạn sẽ thấy là tất cả các dự án do KToolbar sinh ra đều nằm trong một thư
mục con của thư mục apps, và tên của thư mụ
c con trong apps thì giống với tên dự
án mà bạn tạo ra. Bạn cũng sẽ thấy trong dự án HelloSuite của chúng ta vừa tạo ra
có 4 thư mục con là bin, lib, res và src.
Thư mục bin chứa bộ chương trình MIDlet đã được biên dịch (tập tin .jar) và tập
tin mô tả chương trình MIDlet (tập tin .jad). Thư mục lib là thư mục bạn có thể bổ
sung các thư viện (tập tin .jar) mà ứng dụng của bạn cần đến. Thư mục res chứa
các tập tin tài nguyên của chương trình, ví dụ như các tập tin văn bản hay hình ảnh
cho ứng dụng của bạn. Cuối cùng, thư mục src là thư mục sẽ lưu các tập tin mã
nguồn (tập tin .java) của bạn. Các bạn chú ý là quy tắc chuẩn của Java về tên gói

ኼ¿
̴ͺͺ  ͳ͵
(package) và thư mục cũng áp dụng ởđây, nghĩa là nếu lớp Java của bạn có tên là
test.Sample thì tập tin của bạn sẽ nằm ở thư mục src/test/Sample.java
Bây giờ là lúc chúng ta bắt đầu sắn tay áo lên và viết mã nguồn chương trình, bạn
hãy chọn một chương trình soạn thảo văn bản như Notepad, Notepad Plus tại
, jEdit tại hoặc bất kỳ
chương trình soạn thảo văn bản nào khác. Bạn nhập vào nội dung sau và lưu tập tin
với tên HelloMIDlet.java trong thư mục src của dự án. Trong máy của tôi thì tập
tin này được lưu tại
C:\soft\WTK22\apps\HelloSuite\src\HelloMIDlet.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HelloMIDlet

extends MIDlet
implements CommandListener {
private Form mMainForm;
public HelloMIDlet() {
mMainForm = new Form("HelloMIDlet");
mMainForm.append(new StringItem(null, "Hello World!"));
mMainForm.addCommand(new Command("Exit", Command.EXIT, 0));
mMainForm.setCommandListener(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(mMainForm);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
notifyDestroyed();

ኼ¿
̴ͺͺ  ͳͶ
}
}
Tạm thời hiện nay bạn chưa cần hiểu nội dung của đoạn mã nguồn này. Trong bài
kế tiếp chúng ta sẽ tìm hiểu nội dung của chương trình này một cách toàn diện và
chi tiết.
Trên thanh công cụ của KToolbar, bạn hãy nhấn nút Build để biên dịch và đóng
gói toàn bộ dự án của bạn. Quá trình build này sẽ hoàn tất và bạn sẽ thấy thông tin
sau trong cửa sổ của KToolbar:
Project settings saved
Building "HelloSuite"
Build complete

Trong trường hợp quá trình build gặp lỗi, bạn hãy kiểm tra là bạn đã nhập hoàn
toàn chính xác nội dung của đoạn mã nguồn ở trên.
Sau khi quá trình build thành công, bạn có thể chạy ứng dụng của bạn. Trên thanh
công cụ của KToolbar, bạn hãy nhấn nút Run và ứng dụng Hello World sẽ chạy
trên chương trình giả lập như sau:

ኼ¿
̴ͺͺ  ͳͷ
Bây giờ bạn có thểđóng trình giả lập lại và thử chạy bằng cách chọn những Device
khác (xem lại hướng dẫn của bài đầu tiên).
Cuối cùng, bạn hãy mở Windows Explorer để xem lại các thư mục và tập tin trong
dự án của bạn, và bạn sẽ thấy 3 thư mục mới là classes, tmpclasses và tmplib. Đây
là những thư mục tạm do KToolbar sinh ra để phục vụ quá trình biên dịch và đóng
gói ứng dụng của bạn. Nói chung là bạ
n không cần quan tâm đến 3 thư mục này.

ኼ¿
̴ͺͺ  ͳ͸
Như vậy trong bài này bạn đã biết cách dùng công cụ KToolbar để tạo mới một dự
án, dùng một trình soạn thảo văn bản để soạn mã nguồn và dùng KToolbar để biên
dịch ứng dụng cũng như chạy ứng dụng Hello World trong bộ giả lập điện thoại.
Tuy nhiên trong bài này bạn chưa hiểu rõ nội dung mã nguồn ứng dụng Hello
World, và trong số sau chúng ta sẽ cùng mổ xẻứng dụng Hello World này để các
bạn hi
ểu rõ cấu trúc của một ứng dụng đơn giản nhất chạy trên điện thoại di động.
Hẹn gặp lại các bạn trong bài 3 với nhiều thông tin lý thú hơn nữa.

ኼ¿
̴ͺͺ  ͳ͹
BÀI 3: PHÂN TÍCH VÀ TÌM HIỂU ỨNG DỤNG HELLOWORLD ĐẦU

TIÊN CỦA BẠN
Trong bài trước bạn đã biết cách sử dụng bộ công cụ Wireless Toolkit để tạo một
dự án mới của riêng bạn, đó là ứng dụng Hello World, tuy nhiên các bạn vẫn chưa
tìm hiểu về mã nguồn của chương trình đầu tiên này. Trong bài này chúng ta sẽ
cùng phân tích cấu trúc đơn giản nhất của một ứng dụng Java trên điện thoại di
động cũng như gi
ải thích một số khái niệm cơ bản về công nghệ lập trình thời
thượng này.
Chắc bạn cũng còn nhớ là trong bài trước bạn đã sử dụng chương trình KToolbar
để tạo một dự án, biên dịch và chạy chúng. Các bạn có thể xem lại bài trước một
lần nữa trước khi chúng ta bắt đầu vọc mã nguồn của ứng dụng Hello World. Tuy
nhiên đầu tiên ta cần tìm hiểu những khái niệm cơ bả
n trước đã.
Giới thiệu về J2ME
Khi nghe nói về Java, các bạn hay gặp những thuật ngữ như J2SE, J2EE và J2ME.
J2SE viết tắt của Java 2 Standard Edition, là bản Java dùng để viết các chương
trình chạy trên desktop. Còn J2EE là Java 2 Enterprise Edition, một phiên bản
chuyên dùng để viết các ứng dụng web cũng như các dịch vụ web chạy trên các hệ
thống máy chủ. Thế còn J2ME là gì? J2ME (Java 2 Micro Edition) là công nghệ
cũng như nền tảng để viết các ứng dụng chạy trên các thiết bị nhỏ
nhưđiện thoại di
động hay các máy trợ giúp cá nhân PDA. Với nền tảng J2ME, các bạn sẽ có được
một tập các giao diện lập trình ứng dụng (API) được thiết kếđặc thù cho các thiết
bị nhỏ. Vì các thiết bị nhỏ có khả năng xử lý cũng như bộ nhớ rất hạn chế nên các
thiết bị này không thể chạy các máy ảo Java (Java Virtual Machine) của J2SE
được. Và vì lý do này nên một phiên bản máy ảo Java nhỏ gọn đượ
c định nghĩa ra
để có thể chạy được trên các thiết bị di động này.
Một cách ngắn gọn dễ hiểu thì bạn có thể coi J2ME bao gồm một máy ảo Java thu
gọn và một tập các thư viện lập trình thiết kế riêng cho các thiết bi di động.


ኼ¿
̴ͺͺ  ͳͺ
Các bạn cũng chú ý là các bạn không cần cài đặt J2ME lên chiếc điện thoại của
bạn, bởi vì các nhà sản xuất đã cài đặt sẵn cho bạn rồi. Nếu điện thoại của bạn có
ghi là hỗ trợ Java thì có nghĩa là nhà sản xuất đã tích hợp sẵn J2ME vào điện thoại.
Hầu hết các đời điện thoại có giá trên 2 triệu đều có hỗ trợ J2ME. Mặc dù để lậ
p
trình thì bạn chỉ cần môi trường giả lập thông qua bộ công cụ Wireless Toolkit mà
ta đã biết, các bạn cũng nên có một chiếc điện thoại để thử các sản phẩm của bạn
xem chúng chạy ra sao trên điện thoại thật. Trong các bài sau tôi sẽ trình bày cách
cài đặt các chương trình chúng ta viết vào điện thoại thật như thế nào.
J2ME được chia thành 3 thành phần là Cấu Hình (Configuration), Profile và các
thư viện tuỳ chọn bổ sung. Cấu Hình ch
ứa máy ảo Java thu gọn và một số hàm thư
viện nền tảng. Profile bổ sung thêm một tập các thư viện nữa nhằm phục vụ cho
một số dòng thiết bị di động. Còn các thư viện bổ sung cung cấp thêm các chức
năng mở rộng, ví dụ như khả năng nhắn SMS hoặc điều khiển bluetooth.
Có lẽ Cấu Hình và Profile nổi tiếng nhất chính là CLDC (Connected Limited
Device Configuration) và MIDP (Mobile Information Device Profile). CLDC
nghĩa là Cấu hình của các thi
ết bị nhỏ có kết nối, ví dụ như các điện thoại có từ
128KB đến 512KB bộ nhớ cho các ứng dụng Java. Vì khả năng của các thiết bị
này rất hạn chế nên máy ảo Java chạy trên nó rất nhỏ và được gọi là KVM (viết tắt

ኼ¿
̴ͺͺ  ͳͻ
của Kilobyte Virtual Machine). Một Cấu Hình khác dành cho các thiết bị có ít nhất
2MB bộ nhớđược gọi là CDC (Connected Device Configuration), thường có trong
các máy trợ giúp số cá nhân PDA.

Profile MIDP bổ sung cho Cấu Hình CLDC bởi vì nó cung cấp thư viện được thiết
kếđặc biệt để có thể chạy được trên các thiết bị rất nhỏ với tài nguyên CPU và bộ
nhớ rất hạn chế. Ví dụ là MIDP có gói
javax.microedition.lcdui
cho phép chúng ta
lập trình giao diện người dùng (GUI) trên thiết bị có màn hình rất nhỏ. Với các
thiết bị mạnh hơn và màn hình lớn hơn như PDA thì các profile thường gặp trên đó
có tên là Foundation và Personal. Trong loạt bài viết này tôi sẽ không trình bày về
CDC và Foundation/Personal mà chỉ tập trung vào CLDC và MIDP, là nền tảng
trong các điện thoại di động hiện nay.
CLDC có 2 phiên bản là 1.0 và 1.1, trong đó phiên bản 1.0 là phổ biến nhất trong
các điện thoại hỗ trợ Java. MIDP cũng có 2 phiên bản là 1.0 và 2.0. Hầu hết các
máy đ
iện thoại đời mới hiện nay trên thị trường đã hỗ trợ MIDP 2.0.
Tìm hiểu về mã nguồn ứng dụng Hello World
Như vậy là bạn đã nắm được những khái niệm cơ bản nhất về nền tảng J2ME trên
các thiết bị di động. Với những kiến thức nền tảng này chúng ta sẽ tiếp tục bằng
cách phân tích mã nguồn ứng dụng Hello World.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HelloMIDlet
extends MIDlet
implements CommandListener {
private Form mMainForm;
public HelloMIDlet() {
mMainForm = new Form("HelloMIDlet");
mMainForm.append(new StringItem(null, "Hello World!"));

ኼ¿
̴ͺͺ  ʹͲ

mMainForm.addCommand(new Command("Exit", Command.EXIT, 0));
mMainForm.setCommandListener(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(mMainForm);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
}
Để hiểu được ví dụ này, các bạn cần có một ít kiến thức về ngôn ngữ lập trình
hướng đối tượng nói chung và Java nói riêng. Nếu các bạn chưa từng lập trình, các
bạn nên tìm xem một vài chương đầu của bất kỳ cuốn sách lập trình Java nào.
Đầu tiên ứng dụng của chúng ta “import” hay tham khảo 2 gói chính của J2ME
cho việc lập trình ứng dụng cho điện thoại, đó là 2 gói javax.microedition.lcdui
(bao gồm các lớ
p định nghĩa các thành phần giao diện đồ hoạ) và
javax.microedition.midlet (bao gồm lớp MIDlet). Kếđến ta định nghĩa lớp ứng
dụng tên HelloMIDlet bằng cách mở rộng lớp MIDlet và sử dụng giao tiếp
CommandListener để nhận sự kiện về các lệnh do người dùng điều kiển thông qua
các phím bấm.
Ứng dụng của chúng ta cần một biểu mẫu (form) để thể hiện giao diện trên màn
hình, vì vậy ứng dụng của chúng ta khai báo mộ
t biến có kiểu là Form với tên là
mMainForm và biểu mẫu này sẽ dùng để chứa chuỗi ký tự “Hello World!”.
Kếđến chúng ta định nghĩa phương thức khởi tạo (constructor) và trong đó ta tạo
mới một đối tượng biểu mẫu, sau đó tạo mới đối tượng StringItem và thêm đối
tượng StringItem này vào đối tượng Form. Kếđến ta định nghĩa một lệnh với kiểu


ኼ¿
̴ͺͺ  ʹͳ
là Command dùng cho việc kết thúc chương trình. Một lệnh được đặt vào trong
biểu mẫu thông qua phương thức addCommand(). Sau đó ta chỉđịnh chính lớp này
sẽ là lớp xử lý các lệnh thông qua phương thức setCommandListener().
Mỗi ứng dụng viết cho điện thoại bằng MIDP đều phải kế thừa lớp trừu tượng
MIDlet và phải định nghĩa đủ 3 phương thức là startApp(), pauseApp() và
destroyApp(). Chắc các bạn cũng đoán ra được, startApp() được gọ
i khi khởi tạo
ứng dụng, pauseApp() được gọi khi ứng dụng cần được tạm dừng, ví dụ như khi
cần nhận một cuộc gọi đến. Còn phương thức destroyApp() được gọi khi thoát ứng
dụng, thường là thông qua một lệnh thoát (Exit). Trong ví dụ Hello World này thì
ta chỉ sử dụng phương thức startApp() để lấy đối tượng Display (màn hình) và đặt
biểu mẫu mMainForm thành biểu mẫu hiện hành cho màn hình điện thoại. Vì
phương thức này được gọi nên chúng ta sẽ thấy được chuỗi Hello World hiện trên
màn hình điện thoại. Các bạn cũng chú ý là mặc dù ta không cần xử lý gì cho 2
phương thức còn lại là pauseApp() và destroyApp() nhưng ta vẫn phải khai báo
thành phương thức rỗng vì đây là yêu cầu bắc buộc của một ứng dụng MIDlet.
Phương thức cuối cùng, commandAction() sẽđược gọi khi có lệnh nhấn từ người
dùng. Ởđây ta chỉđơn giản gọi phươ
ng thức notifyDestroyed() để kết thúc ứng
dụng.
Bây giờ các bạn có thể thử Việt hoá ứng dụng này bằng cách thay thế 3 chuỗi như
sau và thử biên dịch, chạy lại ứng dụng của mình.
Tiếng Anh Tiếng Việt không dấu
"HelloMIDlet" Ung dung Xin chao
"Hello World!" Xin chao cac ban
Exit" Thoat
Tóm tắt


ኼ¿
̴ͺͺ  ʹʹ
Như vậy các bạn đã nắm được những kiến thức cơ bản nhất về J2ME, và vì đây là
những kiến thức nền tảng nhất nên các bạn sẽ còn tiếp tục sử dụng nó trong các bài
sau. Các bạn cũng hiểu qua được mã nguồn ứng dụng HelloWorld của chúng ta và
thử thay đổi một số chữ từ Anh sang Việt và chạy kiểm tra bản sửa đổi này. Trong
bài sau chúng ta sẽ học c
ấu trúc tổng quát của một ứng dụng MIDlet bất kỳ và làm
quen thêm một số thuật ngữ mới nữa. Hẹn gặp lại các bạn trong bài tới.

ኼ¿
̴ͺͺ  ʹ͵
BÀI 4: TÌM HIỂU CHU KỲ SỐNG CỦA MỘT ỨNG DỤNG J2ME
Trong bài trước bạn đã tìm hiểu những khái niệm, thuật ngữ cơ bản nhất trong lập
trình J2ME trên điện thoại di động và bạn cũng đã nắm được ý nghĩa các đoạn mã
nguồn trong ứng dụng HelloWorld. Trong bài viết này tôi sẽ tiếp tục trình bày chu
kỳ sống của một ứng dụng J2ME bất kỳ, đây là một ki
ến thức nền tảng và hết sức
quan trọng khi khi xây dựng ứng dụng J2ME của riêng bạn.
Chắc bạn cũng còn nhớ trong mã nguồn ứng dụng HelloWorld có 3 phương thức là
startApp(), pauseApp()

destroyApp()
. Đây là 3 phương thức trừu tượng được
định nghĩa trong lớp trừu tượng MIDlet mà bất kỳứng dụng nào cũng phải định
nghĩa và cung cấp phần xử lý cho 3 phương thức này. Để có thể lập trình tốt trên
ĐTDĐ thì các bạn cần nắm vững chu kỳ sống và cách hoạt động của các MIDlet.
Các thiết bị di động cho dù là các chương trình giả lập (như bộ công cụ Sun
Wireless Toolkit) hay các điệ

n thoại thật đều tương tác với các ứng dụng MIDlet
của bạn thông qua một phần mềm của chính thiết bịđó và thường được gọi là Phần
mềm quản lý các ứng dụng MIDlet (gọi tắt là PMQLƯD). PMQLƯD này chịu
tránh nhiệm khởi tạo, kích hoạt, tạm dừng, chạy lại và kết thúc ứng dụng MIDlet.
Ngoài những chức năng này thì PMQLƯD còn chịu trách nhiệm cài đặt và gỡ bỏ
MIDlet c
ủa bạn. Một MIDlet của bạn sẽở một trong 3 trạng thái là kích hoạt
(active), tạm dừng (paused) hay kết thúc (destroyed) và được quản lý thông qua 3
phương thức
startApp()
,
pauseApp()

destroyApp()
.

ኼ¿
̴ͺͺ  ʹͶ
Khi ở trạng thái tạm dừng, ứng dụng MIDlet sẽđợi chuyển sang trạng thái kích
hoạt. Khi ở trạng thái này thì ứng dụng của bạn nên giải phóng bớt các tài nguyên
hệ thống. Khi khởi động chương trình thì ứng dụng của bạn sẽở trạng thái tạm
dừng này trước khi chuyển sang trạng thái kích hoạt. Đôi khi ứng dụng của bạn
phải chuyển sang trạng thái tạm dừng để thiết bị x
ử lý một số chức năng nào đó, ví
dụ như việc nhận một cuộc điện thoại gọi tới. Để chuyển ứng dụng sang trạng thái
tạm dừng thì PMQLƯD sẽ gọi phương thức
pauseApp()
. Ngoài ra nếu bạn muốn
tạm dừng ứng dụng của bạn, bạn có thể gọi phương thức
notifyPaused()

. Một cách
cuối để chuyển sang trạng thái tạm dừng này là khi phương thức
startApp()
được
gọi nhưng lại ném ra một lỗi ngoại lệ là
MIDletStateChangeException
.
Khi ứng dụng chuyển sang trạng thái kích hoạt, nó có thể thực hiện các chức năng
của nó, sử dụng các tài nguyên bộ nhớ và khả năng xử lý của thiết bị. Một ứng
dụng chuyển sang trạng thái kích hoạt khi PMQLƯD gọi phương thức
startApp()
khi ứng dụng đang ở trạng thái tạm dừng. Nếu ứng dụng của bạn đang ở trạng thái
tạm dừng và bạn muốn chuyển sang trạng thái kích hoạt, bạn có thể gọi phương
thức
resumeRequest().
PMQLƯD có thể bỏ qua yêu cầu này hoặc đưa vào hàng
đợi nếu có nhiều ứng dụng cùng yêu cầu được chuyển sang trạng thái kích hoạt.

ኼ¿
̴ͺͺ  ʹͷ
Một ứng dụng sẽ chuyển sang trạng thái kết thúc khi phương thức
destroyApp(boolean unconditional)
được gọi thành công khi ứng dụng đang ở
trạng thái kích hoạt hay tạm dừng. Khi PMQLƯD muốn kết thức ứng dụng
MIDlet, nó sẽ gọi phương thức này để ứng dụng có thể lưu các thông số trạng thái
và giải phóng tài nguyên hệ thống. Bạn có thể chuyển ứng dụng của bạn sang trạng
thái kết thúc bằng cách gọi phương thức
notifyDestroyed()
, bạn chú ý là trước khi
gọi phương thức này thì ứng dụng của bạn cần giải phóng tất cả tài nguyên vì

phương thức
destroyApp(boolean unconditional)
sẽ không được gọi.
Vậy chuyện gì sẽ xảy ra khi ứng dụng của bạn đang xử lý một thao tác quan trọng
nào đó và phương thức
destroyApp(boolean unconditional)
được gọi? Điều này tuỳ
thuộc vào giá trị của biến
unconditional
truyền vào. Nếu biến này có giá trị là true
(đúng) thì ứng dụng của bạn sẽ chắc chắn bị kết thúc mà PMQLƯD không cần biết
ứng dụng của bạn đang làm gì. Tuy nhiên nếu biến
unconditional
này có giá trị
false (sai) thì có nghĩa là PMQLƯD muốn kết thúc ứng dụng của bạn, nhưng nếu
ứng dụng của bạn đang xử lý một công việc quan trọng, bạn có thể ném ra ngoại lệ
MIDletStateChangeException
để thông báo PMQLƯD rằng ứng dụng chưa muốn
kết thúc. Tuy nhiên việc này cũng có thể tuỳ thuộc vào đời điện thoại cụ thể, ví dụ
như có thể PMQLƯD vẫn kết thúc ứng dụng hoặc nó sẽ gọi
destroyApp(boolean
unconditional)
sau đó. Các bạn cũng chú ý là khi ứng dụng chuyển sang trạng thái
kết thúc có nghĩa là ứng dụng sẽđược giải phóng khỏi bộ nhớ nhưng ứng dụng vẫn
nằm trong ĐTDĐ và bạn vẫn có thể tiếp tục chạy nó những lần sau (trừ khi bạn gỡ
bỏứng dụng của bạn ra khỏi ĐTDĐ)
Tóm tắt
Như vậy qua bài viết này các bạn đã nắm
được những kiến thức hết sức quan trọng
về chu kỳ sống của các ứng dụng, 3 trạng thái tạm dừng, kích hoạt, kết thúc của bất

kỳứng dụng nào và các phương thức được gọi khi chuyển ứng dụng từ trạng thái
này sang trạng thái khác. Trong bài sau tôi sẽ hướng dẫn bạn những cách đưa ứng

×