Activity là một thành phần cốt lõi trong Android, đại diện cho một màn hình giao diện người dùng mà người dùng có thể tương tác. Mỗi ứng dụng Android thường bao gồm một hoặc nhiều Activity, và mỗi Activity thường đại diện cho một màn hình trong ứng dụng. Activity quản lý giao diện, tương tác với người dùng và điều phối các thành phần khác của ứng dụng.

Activity là phần cơ bản của ứng dụng Android, và việc hiểu rõ về nó giúp phát triển các ứng dụng mạnh mẽ, tương tác tốt. Bây giờ, chúng ta sẽ đi sâu vào chi tiết về Activity, cách hoạt động của nó, và các khái niệm liên quan.

Vai trò của Activity trong Android

Một Activity trong Android có vai trò quan trọng vì nó quản lý giao diện người dùng (UI) và xử lý tương tác với người dùng. Mỗi Activity sẽ hiển thị một bố cục (layout) và cho phép người dùng tương tác thông qua các thành phần UI như nút, văn bản, danh sách, v.v.

Đặc điểm chính của Activity:

  1. Giao diện người dùng (UI): Mỗi Activity có một giao diện UI mà người dùng nhìn thấy và tương tác.
  2. Tương tác người dùng: Activity nhận và xử lý các hành động của người dùng như nhấn nút, nhập liệu, hoặc vuốt màn hình.
  3. Quản lý vòng đời: Activity có một vòng đời phức tạp, bao gồm các trạng thái khác nhau (như khởi tạo, hiển thị, tạm dừng, hoặc bị hủy).

Vòng đời của Activity

Vòng đời của một Activity trong Android bao gồm các trạng thái từ khi Activity được tạo ra cho đến khi nó bị hủy. Hiểu rõ về vòng đời giúp nhà phát triển quản lý hiệu quả các tài nguyên hệ thống và đảm bảo rằng ứng dụng hoạt động mượt mà, không bị tiêu tốn nhiều tài nguyên.

Các trạng thái chính trong vòng đời của một Activity bao gồm:

1. onCreate()

Phương thức này được gọi khi Activity được khởi tạo lần đầu tiên. Đây là nơi bạn có thể thực hiện các thiết lập ban đầu, chẳng hạn như định nghĩa giao diện của Activity và khởi tạo các biến hoặc thành phần.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); // Đặt giao diện cho Activity
}

2. onStart()

Sau khi Activity được tạo, phương thức onStart() sẽ được gọi khi Activity chuẩn bị xuất hiện trên màn hình.

3. onResume()

Phương thức này được gọi khi Activity trở nên khả dụng và người dùng có thể tương tác với nó. Tại thời điểm này, Activity đã hoàn toàn hiển thị trên màn hình và đang hoạt động ở trạng thái foreground.

4. onPause()

Phương thức này được gọi khi Activity tạm thời dừng lại, chẳng hạn khi một Activity khác xuất hiện trên màn hình nhưng Activity hiện tại vẫn còn một phần hoạt động trong nền.

5. onStop()

Khi Activity không còn hiển thị trên màn hình và không còn tương tác với người dùng, phương thức onStop() sẽ được gọi. Activity có thể bị hủy hoặc quay trở lại trạng thái onRestart().

6. onRestart()

Phương thức này được gọi khi Activity quay trở lại từ trạng thái dừng (onStop()), chẳng hạn khi người dùng quay lại ứng dụng sau khi đã thoát ra.

7. onDestroy()

Phương thức này được gọi ngay trước khi Activity bị hủy hoàn toàn. Đây là nơi bạn giải phóng các tài nguyên mà Activity đã sử dụng.

Hình minh họa vòng đời của Activity:

onCreate() -> onStart() -> onResume() onPause() -> onStop() onRestart() -> onResume() onDestroy()

Ví dụ về Activity

Dưới đây là một ví dụ cơ bản về Activity, trong đó chúng ta tạo một Activity và đặt giao diện của nó là một tập tin XML chứa một nút bấm:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // Giao diện XML của Activity
    }
}

Trong tệp activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me" />
</LinearLayout>

Trong ví dụ này, MainActivity là một Activity hiển thị giao diện có chứa một nút bấm.

Giao tiếp giữa các Activity

Trong Android, ứng dụng thường có nhiều Activity, và các Activity này có thể tương tác với nhau. Một trong những cách phổ biến nhất để bắt đầu một Activity mới là sử dụng Intent.

Cách mở một Activity mới

Dưới đây là cách sử dụng Intent để mở một Activity khác:

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

Trong ví dụ này, khi MainActivity thực hiện startActivity(), nó sẽ mở SecondActivity.

Quản lý trạng thái Activity

Một Activity có thể bị hệ thống hủy khi tài nguyên hệ thống khan hiếm (ví dụ, khi bộ nhớ thấp) hoặc khi người dùng chuyển sang một ứng dụng khác. Để đảm bảo rằng dữ liệu không bị mất khi Activity bị hủy, bạn cần sử dụng phương thức onSaveInstanceState() để lưu trạng thái của Activity và onRestoreInstanceState() để khôi phục trạng thái.

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // Lưu dữ liệu vào outState
    outState.putString("key", "Giá trị");
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    // Khôi phục dữ liệu từ savedInstanceState
    String value = savedInstanceState.getString("key");
}

Kết luận

Activity là một thành phần cốt lõi trong ứng dụng Android, quản lý giao diện người dùng và điều phối các tác vụ. Hiểu rõ về vòng đời của Activity và cách quản lý chúng giúp đảm bảo ứng dụng hoạt động mượt mà và tiết kiệm tài nguyên. Bằng cách tận dụng Activity một cách hiệu quả, bạn có thể xây dựng các ứng dụng mạnh mẽ, có trải nghiệm người dùng tốt và tối ưu hóa hiệu suất hệ thống.