Android: Activity trong Android
Activity trong Android được điều khiển bởi 7 phương thức của lớp android.app.Activity. Activity là lớp con của lớp ContextThemeWrapper.
Mỗi activity là một màn hình đơn trong Android. Nó giống như window hoặc frame của Java.
Nhờ sự trợ giúp của activity, bạn có thể đặt tất cả các thành phần UI hoặc widget của mình trong một màn hình.
Các phương thức vòng đời của Activtiy
Chúng ta hãy xem 7 phương pháp vòng đời của hoạt động Android.
Phương Thức | Mô tả |
---|---|
onCreate() | Được gọi khi activity được tạo lần đầu. |
onStart() | Được gọi khi activity đang hiển thị cho người dùng. |
onResume() | Được gọi khi activity bắt đầu tương tác với người dùng. |
onPause() | Được gọi khi activity không hiển thị cho người dùng. |
onStop() | Được gọi khi activity không còn hiển thị cho người dùng. |
onRestart() | Được gọi sau khi activity của bạn bị dừng lại, trước khi bắt đầu. |
onDestroy() | Được gọi trước khi activity bị hủy. |
Ví dụ về Activity
Dưới đây là file activity_main.xml nằm trong thư mục res/layout/ :
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Còn dưới đây là nội dung của file MainActivity.java nằm trong thư mục main/java/. File này các phương thức thể hiện vòng đời của Activity, trong đó phương thức Log.d() được sử dụng để hiển thị thông báo log:
package v1study.com.activity; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { String msg="Android: "; /**Được gọi khi activity được tạo lần đầu*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg,"The onCreate() event"); } /**Được gọi khi activity đang hiển thị cho người dùng*/ @Override protected void onStart(){ super.onStart(); Log.d(msg,"The onStart() event"); } /**Được gọi khi activity bắt đầu tương tác với người dùng*/ @Override protected void onResume(){ super.onResume(); Log.d(msg,"The onResume() event"); } /**Được gọi khi activity không hiển thị cho người dùng*/ @Override protected void onStop(){ super.onStop(); Log.d(msg,"The onStop() event"); } /**Được gọi trước khi activity bị hủy*/ @Override protected void onDestroy(){ super.onDestroy(); Log.d(msg,"The onDestroy() event"); } }
Một lớp Activity tải tất cả thành phần UI bằng cách sử dụng file XML có sẵn trong thư mục res/layout/ của project. Lệnh sau tải các thành phần UI từ file res/layout/activity_main.xml:
setContentView(R.layout.activity_main);
Một ứng dụng có thể có một hoặc nhiều Activity. Mỗi Activity bạn định nghĩa phải được khai báo trong file AndroidManifest.xml và activity chính của cho ứng dụng phải được khai báo trong manifest với một <intent-filter> và bao gồm action là MAIN và category là LAUNCHER, cụ thể file AndroidManifest.xml như sau:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dist="http://schemas.android.com/apk/distribution" package="v1study.com.activity"> <dist:module dist:instant="true" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Nếu hoặc MAIN hoặc LAUNCHER không được khai báo, thì biểu tượng ứng dụng sẽ không xuất hiện trong danh sách ứng dụng của màn hình Home.
Giờ bạn hãy thử chạy ứng dụng, hãy nhấn biểu tượng Run 'app' từ thanh công cụ. Android sẽ đặt ứng dụng trên AVD và bắt đầu hiển thị cửa sổ Emulator như sau:
Và bạn sẽ thấy thông báo Logcat như sau sau:
Bạn thử nhấn nút Power trên Android Emulator:
Và nó sẽ tạo thông báo event sau:
D/Android:: The onStop() event
Khi bạn nhấn nút Apply Changes như hình dưới thì kết quả sẽ như sau: