Activity trong Android
Một Activity biểu diễn một màn hình với một giao diện UI giống như Window hoặc Frame của Java.Android activity, mà là một lớp con của lớp ContextThemWrapper.
Nếu bạn đã từng làm việc với ngôn ngữ lập trình C, C++ hoặc Java thì bạn phải thấy rằng chương trình của bạn bắt đầu từ hàm main(). Tương tự, hệ điều hành Android khởi tạo chương trình của nó bên trong một Activity bắt đầu với một lời gọi trên phương thức callback là onCreate(). Có một dãy các phương thức callback mà khởi động một Activity và một dãy phương thức callback khác sẽ hủy một Activity như sau trong sơ đồ vòng đời của Activity. (image courtesy : android.com )
Lớp Activity định nghĩa các callback như events, … Bạn không cần triển khai tất cả phương thức này. Tuy nhiên, điều quan trọng là bạn hiểu từng phương thức và triển khai chúng để sao cho ứng dụng của bạn vận hành theo cách người dùng mong đợi.
Callback | Miêu tả |
---|---|
onCreate() | Đây là phương thức callback đầu tiên và được gọi khi Activity được tạo đầu tiên |
onStart() | Phương thức callback này được gọi khi Activity trở nên nhìn thấy tới người dùng |
onResume() | Được gọi khi người dùng bắt đầu tương tác với ứng dụng |
onPause() | Activity tạm dừng không nhận input từ người dùng và không thể thực thi bất cứ code nào và được gọi khi activity hiện tại đang được dừng và activity trước đó đang được phục hồi |
onStop() | Callback này được gọi trươc skhi activity bị hủy bởi hệ thống |
onDestroy() | Callback này được gọi trươc skhi activity bị hủy bởi hệ thống |
onRestart() | Được gọi khi activity tái khởi động sau khi dừng nó |
Ví dụ
Ví dụ này đưa bạn qua các bước đơn giản để minh họa vòng đời của Activity trong ứng dụng Android. Bạn theo các bước sau để sửa đổi ứng dụng Android mà chúng ta đã tạo trong chương Ví dụ Hello World.
Bước | Miêu tả |
---|---|
1 | Bạn sẽ sử dụng Eclipse IDE để tạo một ứng dụng Android và đặt tên nó là HelloWorld dưới một package là com.example.helloworld như đã giải thích trong chương Ví dụ Hello World |
2 | Sửa đổi MainActivity.java như dưới đây. Phần còn lại không thay đổi |
3 | Chạy ứng dụng để chạy Android Emulator và kiểm tra kết quả các thay đổi đã thực hiện trong ứng dụng này |
Dưới đây là nội dung của main activity đã sửa đổi src/com.example.helloworld/MainActivity.java. File này bao gồm các phương thức nền tảng. Phương thức Log.d() đã được sử dụng để tạo thông báo log:
package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; public class MainActivity extends Activity { String msg = "Android : "; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg, "The onCreate() event"); } /** Called when the activity is about to become visible. */ @Override protected void onStart() { super.onStart(); Log.d(msg, "The onStart() event"); } /** Called when the activity has become visible. */ @Override protected void onResume() { super.onResume(); Log.d(msg, "The onResume() event"); } /** Called when another activity is taking focus. */ @Override protected void onPause() { super.onPause(); Log.d(msg, "The onPause() event"); } /** Called when the activity is no longer visible. */ @Override protected void onStop() { super.onStop(); Log.d(msg, "The onStop() event"); } /** Called just before the activity is destroyed. */ @Override public 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ởi sử dụng XML file 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ừ res/layout/activity_main.xml file:
setContentView(R.layout.activity_main);
Một ứng dụng có thể có một hoặc nhiều Activity mà không có bất kỳ giới hạn nào. Mỗi Activity bạn định nghĩa cho ứng dụng của bạn phải được khai báo trong AndroidManifest.xml file và main activity cho ứng dụng phải được khai báo trong manifest với một <intent-filter> mà bao MAIN action và LAUNCHER category, như sau:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <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 thử chạy ứng dụng Hello World! đã được sửa đổi. Giả sử bạn đã tạo AVDtrong khi cài đặt. Để chạy ứng dụng từ Eclipse, mở activity file của project và nhấn biểu tượng Run từ thanh công cụ. Eclipse sẽ đặt ứng dụng trên AVD và bắt đầu nó và nếu mọi thứ là ổn, nó sẽ hiển thị cửa sổ Emulator và bạn sẽ thấy thông báo log sau trong cửa sổ LogCat trong Eclipse IDE.
07-19 15:00:43.405: D/Android :(866): The onCreate() event 07-19 15:00:43.405: D/Android :(866): The onStart() event 07-19 15:00:43.415: D/Android :(866): The onResume() event
Bạn thử nhấn nút Red trên Android Emulator và nó sẽ tạo thông báo event sau trong cửa sổ LogCat trong Eclipse IDE.
07-19 15:01:10.995: D/Android :(866): The onPause() event 07-19 15:01:12.705: D/Android :(866): The onStop() event
Bạn thử nhấn nút Menu trên Android Emulator và nó sẽ tạo thông báo event sau trong cửa sổ LogCat trong Eclipse IDE:
07-19 15:01:13.995: D/Android :(866): The onStart() event 07-19 15:01:14.705: D/Android :(866): The onResume() event
Tiếp theo, bạn thử nhấn nút Back trên Android Emulator và nó sẽ tạo thông báo event sau trong cửa sổ LogCat trong Eclipse IDE và đến đây là kết thúc vòng đời của Activity cho một ứng dụng Android.
07-19 15:33:15.687: D/Android :(992): The onPause() event 07-19 15:33:15.525: D/Android :(992): The onStop() event 07-19 15:33:15.525: D/Android :(992): The onDestroy() event
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Bài học Angular phổ biến tại vietjack.com: