Bài trước: Lập trình Android bằng Java (3): Làm quen với một số điều khiển
-----
4. Activity và intent
Trong các bài học trước, bạn đã làm quen với activity bằng cách tạo và lập trình xử lý activity có tên là MainActivity. Hiểu đơn giản activity là một màn hình giao diện. Trong phần này chúng ta sẽ tìm hiểu thêm về activity.
4.1 Activity là gì?
Activity là điểm vào (entry point) của ứng dụng, giúp người dùng tương tác với ứng dụng, nó có giao diện là một màn hình đơn nhất. Như chúng ta đã làm quen với activity có tên là MainActivity, nó gồm lớp xử lý tương tác với người dùng MainActivity.java và giao diện activity_main.xml.
Một ứng dụng thường gồm nhiều activity, các activity có thể gọi lẫn nhau. Trong đó, có một activity được chỉ định là main activity, nó sẽ được gọi khi người dùng khởi chạy ứng dụng. Sau đó, main activity sẽ gọi các activity khác để thực hiện các công việc cụ thể. Ví dụ, ứng dụng email có thể gồm activity để hiển thị danh sách email mới (main activity), activity để soạn email, và activity để đọc một email.
Trong một ứng
dụng, mặc dù các activity được kết hợp để làm việc chung với nhau, tạo thành
một ứng dụng hoàn chỉnh, nhưng các activity là độc lập với nhau.
Một ứng dụng có
thể gọi activity của một ứng dụng khác. Ví dụ, ứng dụng camera có thể gọi
activity của ứng dụng email, để gửi một bức ảnh qua email.
Trải nghiệm trên
ứng dụng di động khác với trải nghiệm trên ứng dụng desktop ở chỗ: tương tác
của người dùng với ứng dụng không phải lúc nào cũng bắt đầu ở cùng một nơi (một
giao diện, màn hình). Thay vào đó, hành trình của người dùng có thể bắt đầu
bằng một giao diện không xác định trước. Ví dụ, nếu bạn mở ứng dụng email từ
màn hình chính, bạn sẽ thấy danh sách email mới. Tuy nhiên, nếu bạn đang sử
dụng ứng dụng camera, sau đó khởi chạy ứng dụng email, thì bạn lại thấy màn
hình để soạn email.
Để sử dụng
activity, bạn phải đăng ký trong manifest và cần quản lý vòng đời của activity
một cách phù hợp.
4.2 Đăng ký activity trong manifest
Ứng dụng muốn sử
dụng activity thì cần phải khai báo trong tập tin AndroidManifest.xml.
Sử dụng phần tử
<activity> để khai báo một activity, kèm theo một số thuộc tính. Phần tử
<activity> là con (nằm trong) phần tử <application>.
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity"
/>
…
</application ... >
...
</manifest >
Thuộc tính bắt
buộc phải có trong phần tử <activity> là android:name, cho biết tên lớp xử lý cho activity. Bạn cũng có thể sử dụng thêm các thuộc tính khác để định nghĩa icon, label, UI theme cho activity.
4.3 Tạo điện thoại giả lập bằng LDPlayer
Sau khi chạy một
số ứng dụng đơn giản, nhận thấy phần mềm máy ảo Emulator đính kèm với Android
Studio chạy không ổn định. Quá trình khởi động và chạy điện thoại giả lập mất
nhiều thời gian. Có nhiều thời điểm, khi bấm nút Run app trên Android Studio,
mở Task Manager để kiểm tra, thấy RAM 16GB mà bị sử dụng trên 97%, truy cập đĩa
cứng luôn là 100%.
Nếu máy của bạn
cũng gặp tình trạng trên, thì có thể nghĩ tới việc dùng phần mềm khác để tạo
điện thoại giả lập thay thế cho Emulator.
Lên mạng để tìm
kiếm các phần mềm giả lập điện thoại miễn phí, chọn một phần mềm mà bạn muốn.
Ví dụ, bạn có thể
thử phần mềm LDPlayer. Vào trang web https://vi.ldplayer.net/ để tải phần mềm về máy, thực hiện cài đặt như một
phần mềm thông thường.
Sau khi cài đặt xong, bạn chạy LDPlayer, giao diện mặc định là tiếng Việt, bấm vào nút Cài đặt, để thực hiện một số cấu hình.
- Để chọn cấu
hình cho điện thoại: Cài đặt > Cao cấp > Di động > 1080x1920(dpi 480)
- Để chọn kiểu
kết nối cho Android Studio: Cài đặt > Khác > mục Debug ADB, chọn Bật kết nối local.
- Bấm nút Lưu,
LDPlayer sẽ khởi động lại để ghi nhận các cấu hình vừa được thiết lập
Sau khi cài đặt, cấu hình, và chạy LDPlayer, Android Studio sẽ tự nhận điện thoại giả lập.
Bạn đã có thể lập
trình trên Android Studio và xuất kết quả trên điện thoại giả lập vừa tạo
(samsung SM-G977N).
Bạn có thể vào
lại Task Manager để kiểm tra tình trạng sử dụng RAM và truy cập đĩa cứng, sẽ
thấy hệ thống chạy ổn định và tốn ít tài nguyên hơn.
4.4 Thêm activity cho ứng dụng
Để học nhanh, học
được nhiều, làm được nhiều, cách đơn giản nhất là đọc thật nhiều; xem hướng
dẫn, thực hành thật nhiều; xâu chuỗi kiến thức thật nhiều, và viết lại để hệ
thống kiến thức thật nhiều. Nói chung là chăm chỉ tìm hiểu, thực hành, và làm
việc.
Ở các phần trước,
chúng ta đã tạo ra 2 ứng dụng riêng lẻ: HelloWorld và Register. Phần này, chúng ta sẽ tạo ra
một ứng dụng gồm 3 activity: MainActivity, HelloActivity và RegisterActivity.
MainActivity gồm 2 nút (HelloWorld, Register), bấm vào 2 nút sẽ gọi
HelloActivity và RegisterActivity tương ứng.
Thực hiện:
- Tạo dự án mới,
New Project > Empty Views Activity > đặt tên TeoApp > Finish.
- Thiết kế giao
diện cho activity_main.xml, gồm 2 nút HelloWorld và Register
[activity_main.xml]
<?xml version="1.0"
encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btnHelloWorld"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="228dp"
android:onClick="onBtnHelloClick"
android:text="HelloWorld"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnRegister"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:onClick="onBtnRegisterClick"
android:text="Register"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnHelloWorld" />
</androidx.constraintlayout.widget.ConstraintLayout>
- Thêm 2
activity, có tên là HelloActivity và RegisterActivity: trong giao diện Android
Studio > khung Project app > chuột phải vào thư mục java > New >
Activity > Empty Views Activity > đặt tên HelloActivity; làm tương tự cho
RegisterActivity.
Như đề cập, một
activity muốn hoạt động phải được đăng ký trong manifest. Bạn mở tập tin
AndroidManifest.xml để kiểm tra sẽ thấy Android Studio đã tự động thêm 2 khai
báo cho 2 activity chúng ta vừa thêm vào ứng dụng.
[AndroidManifest.xml]
...
<activity
android:name=".RegisterActivity"
android:exported="false"
/>
<activity
android:name=".HelloActivity"
android:exported="false"
/>
...
Thuộc tính name cho biết lớp java chứa mã xử lý cho activity:
android:name=".RegisterActivity"
android:name=".HelloActivity"
Khi bạn thêm một
activity, ngoài việc đăng ký trong manifest, 2 tập tin khác cũng được tạo ra là
tập tin xử lý (.java) và tập tin chứa mã giao diện (.xml).
- HelloActivity:
HelloActivity.java, activity_hello.xml
- RegisterActivity: RegisterActivity.java, activity_register.xml
Xem hình minh họa:
-----Cập nhật: 4/2/2025
-----
Bài sau: