Lập trình Android bằng Java (4): Activity và intent

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>

 Giao diện của main activity:


- 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: