Khi phát triển game mobile bằng Unity, chúng ta phải kiểm soát các sự kiện vòng đời của ứng dụng để xử lý việc tạm dừng, mất focus, khóa màn hình, thoát app, mở lại app… Unity cung cấp ba hàm quan trọng:
- OnApplicationFocus(bool hasFocus)
- OnApplicationPause(bool isPaused)
- OnApplicationQuit()
Thử Nghiệm
Thêm đoạn mã sau vào một lớp kế thừa từ MonoBehaviour, sau đó build và chạy trực tiếp trên thiết bị thực (iOS/Android) để quan sát chính xác cách các hàm này được kích hoạt.
private void OnApplicationFocus(bool hasFocus)
{
Debug.Log("OnApplicationFocus:" + hasFocus);
}
private void OnApplicationPause(bool hasPause)
{
Debug.Log("OnApplicationPause:" + hasPause);
}
private void OnApplicationQuit() {
Debug.Log("OnApplicationQuit");
}
Android
1. Khi khởi động ứng dụng
OnApplicationPause:False
OnApplicationFocus:True
2. Khi nhấn các nút Home, Back, Over View

# Back Button
OnApplicationFocus:False
OnApplicationQuit
# Home Button
OnApplicationPause:True
OnApplicationFocus:False
# Overview Button
OnApplicationPause:True
OnApplicationFocus:False
3. Khi màn hình bị khóa
OnApplicationPause:True
OnApplicationPause:False
4. Khi menu Thông báo được hiển thị
OnApplicationFocus:False
IOS
1. Khi khởi động ứng dụng
OnApplicationFocus:True
2. Nhấn nút NGUỒN trong khi đang sử dụng ứng dụng
//Khi nhấn nút nguồn
OnApplicationFocus:False
OnApplicationPause:True
//Khi bấm nút Home để hủy
OnApplicationFocus:True
OnApplicationPause:False
3. Nhấn nút Home khi đang sử dụng ứng dụng
//Khi nhấn
OnApplicationFocus:False
OnApplicationPause:True
// Khi bật lại ứng dụng từ màn hình chính
OnApplicationFocus:True
OnApplicationPause:False
Kết Luận
1. OnApplicationFocus(bool hasFocus)
- Gọi khi game mất hoặc lấy lại focus.
- Android nhạy với focus (mở keyboard, kéo notification có thể mất focus).
- iOS ít gọi hơn, không xem keyboard hay notification là mất focus
2. OnApplicationPause(bool isPaused)
- Quan trọng nhất trên mobile
- Gọi khi app vào background (Home, chuyển app, khóa màn hình).
- Khi quay lại foreground:
isPaused = false.
- Hoạt động ổn định cả iOS và Android.
3. OnApplicationQuit()
- Gọi khi app chuẩn bị thoát hẳn
- Trên Android có thể được gọi khi user kill app.
- Trên iOS gần như không bao giờ được gọi.
- Không dùng để lưu dữ liệu quan trọng trên mobile
