Activity trong Android – Freetuts

Trong Android, Activity biểu lộ một màn hình hiển thị đơn với giao diện người dùng ( UI ) của ứng dụng và nó sẽ đóng vai trò là điểm nhập cư để người dùng tương tác với ứng dụng .

test php

banquyen png

Bài viết này được đăng tại

freetuts.net

, không được copy dưới mọi hình thức.

I. Activity Android là gì?

Nói chung, những ứng dụng Android sẽ chứa nhiều màn hình hiển thị và mỗi màn hình hiển thị sẽ là một phần lan rộng ra của lớp Activity. Bằng cách sử dụng những activity, tất cả chúng ta hoàn toàn có thể đặt toàn bộ những component UI trong ứng dụng vào một màn hình hiển thị đơn .
Từ nhiều activity trong ứng dụng Android, một activity hoàn toàn có thể được lưu lại là một main activity và đó là màn hình hiển thị tiên phong Open khởi chạy ứng dụng. Trong ứng dụng Android, mỗi activity hoàn toàn có thể khởi đầu một activity khác để thực thi những hành vi khác nhau .
Ví dụ : ứng dụng danh bạ có nhiều activity, trong đó màn hình hiển thị main activity sẽ hiển thị list những liên hệ và từ màn hình hiển thị main activity, tất cả chúng ta hoàn toàn có thể khởi chạy những activity khác phân phối màn hình hiển thị để thực thi một tác vụ như thêm liên hệ mới và tìm kiếm những liên hệ. Tất cả những activity này trong ứng dụng liên hệ bị ràng buộc lỏng lẻo với những activity khác nhưng sẽ phối hợp với nhau để cung ứng thưởng thức người dùng tốt hơn .Bài viết này được đăng tại [ không tính tiền tuts. net ]
Nói chung, trong Android có sự nhờ vào tối thiểu giữa những activity trong một ứng dụng. Để sử dụng những activity, tất cả chúng ta cần ĐK thông tin những activity đó trong file manifest ( AndroidMainfest. xml ) và cần quản trị vòng đời activity đúng cách .
Để sử dụng những activity trong ứng dụng, cần xác lập một activity với những thuộc tính bắt buộc trong file manifest ( AndroidMainfest. xml ) như được hiển thị bên dưới



    
        
          …….    

          …….

        

     …….


Thuộc tính activity android : name sẽ đại diện thay mặt cho tên của lớp và tất cả chúng ta cũng hoàn toàn có thể thêm nhiều thuộc tính như icon, label, theme, permissions, v.v. vào một activity .
Trong ứng dụng Android, những activity hoàn toàn có thể được tiến hành như một lớp con của lớp Activity như dưới đây .

public class MainActivity extends Activity {

}

Đây là cách tất cả chúng ta hoàn toàn có thể sử dụng activity trong ứng dụng Android .

II. Vòng đời của Android activity

Nói chung, những activity trong ứng dụng Android sẽ trải qua một quy trình tiến độ khác nhau trong vòng đời của chúng. Trong Android, lớp Activity có 7 phương pháp callback như onCreate ( ), onStart ( ), onPause ( ), onRestart ( ), onResume ( ), onStop ( ) và onDestroy ( ) để diễn đạt cách activity sẽ hoạt động giải trí ở những quá trình khác nhau .
Bằng cách sử dụng những phương pháp callback, tất cả chúng ta hoàn toàn có thể xác lập cách activity hoạt động giải trí khi người dùng nhập hoặc rời khỏi ứng dụng .

III. Các phương thức callback trong vòng đời android activity

Trong Android, một activity trải qua một loạt những trạng thái trong suốt cuộc sống của nó. Bằng cách sử dụng những phương pháp callback, tất cả chúng ta hoàn toàn có thể quy đổi activity giữa những trạng thái .
Hệ thống Android khởi chạy chương trình trong một Activity khởi đầu bằng cách gọi phương pháp callback onCreate ( ). Có một chuỗi những phương pháp callback khởi đầu một activity và một chuỗi những phương pháp callback phá bỏ một activity .
Phần này sẽ phân phối cho bạn thông tin cụ thể về những phương pháp callback để giải quyết và xử lý những quy đổi activity giữa những trạng thái trong vòng đời .

1. onCreate()

Đây là phương pháp callback tiên phong và nó kích hoạt khi mạng lưới hệ thống tạo ra một activity lần tiên phong. Trong quy trình tạo activity, activity được đưa vào trạng thái Created .
Nếu tất cả chúng ta có cách khởi động ứng dụng chỉ cần thực thi một lần trong suốt vòng đời của một activity, thì tất cả chúng ta hoàn toàn có thể viết cách đó trong phương pháp onCreate ( ) .
Sau đây là ví dụ về việc xác lập phương pháp onCreate ( ) trong activity .

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

Khi phương pháp onCreate ( ), activity sẽ nhập vào trạng thái và mạng lưới hệ thống gọi phương pháp onStart ( ) .

2. onStart()

Phương thức callback onStart ( ) sẽ gọi khi một activity được nhập vào trạng thái Started bằng cách triển khai xong phương pháp onCreate ( ). Phương thức onStart ( ) sẽ làm cho một activity hiển thị cho người dùng và việc triển khai phương pháp này sẽ kết thúc rất nhanh .
Sau đây là ví dụ về việc xác lập phương pháp onStart ( ) trong activity .

@Override
protected void onStart()
{
    super.onStart()
}

Sau khi phương pháp onStart ( ) thực thi xong, activity sẽ chuyển sang trạng thái Resumed và mạng lưới hệ thống gọi phương pháp onResume ( ) .

3. onResume()

Khi một activity được đưa vào trạng thái, mạng lưới hệ thống gọi phương pháp callback onResume ( ). Trong trạng thái này activity khởi đầu tương tác với người dùng, điều đó có nghĩa là người dùng hoàn toàn có thể thấy một phần công dụng và phong cách thiết kế của ứng dụng trên màn hình hiển thị .
Chủ yếu tính năng cốt lõi của một ứng dụng được tiến hành theo phương pháp onResume ( ) .
Ứng dụng sẽ ở trạng thái này cho đến khi một activity khác xảy ra để gián đoạn ứng dụng như tắt cuộc gọi điện thoại cảm ứng hoặc màn hình hiển thị, v.v.
Trong trường hợp nếu có bất kể sự kiện gián đoạn nào xảy ra ở trạng thái Resumed, activity sẽ được chuyển sang trạng thái Paused và mạng lưới hệ thống sẽ gọi phương pháp onPause ( ) .
Sau khi một activity được trả về từ trạng thái Paused về trạng thái Resumed, mạng lưới hệ thống sẽ gọi phương pháp onResume ( ) do tất cả chúng ta cần tiến hành phương pháp onResume ( ) để khởi tạo những thành phần mà tất cả chúng ta tạo trong phương pháp onPause ( ) .
Sau đây là ví dụ về định nghĩa phương pháp onResume ( ) trong activity .

@Override
public void onResume() {
    super.onResume(); 
    if (mCamera == null) {
        initializeCamera();
    }
}

Nếu có bất kể gián đoạn nào xảy ra ở trạng thái Resumed, activity sẽ được chuyển sang trạng thái Paused và mạng lưới hệ thống sẽ gọi phương pháp onPause ( ) .

4. onPause()

Bất cứ khi nào người dùng rời khỏi một activity hoặc activity hiện tại đang bị Paused thì mạng lưới hệ thống sẽ gọi phương pháp onPause ( ). Phương thức onPause ( ) được sử dụng để tạm dừng một activity ( như dừng phát nhạc ) khi activity ở trạng thái paused hoặc chuyển một activity trong khi chuyển từ ứng dụng này sang ứng dụng khác vì mỗi lần chỉ hoàn toàn có thể tập trung chuyên sâu một ứng dụng .
Sau đây là ví dụ về việc xác lập phương pháp onPause ( ) trong activity .

@Override
public void onPause() {
    super.onPause();
  if (mCamera != null) {
        mCamera.release();
        mCamera = null;
    }
}

Sau khi triển khai xong thực thi phương pháp onPause ( ), phương pháp tiếp theo là onStop ( ) hoặc onResume ( ) tùy thuộc vào những gì xảy ra sau khi một activity được đưa vào trạng thái Paused .

5. onStop()

Hệ thống sẽ gọi phương pháp onStop ( ) khi một activity không còn hiển thị cho người dùng, khi đó activity sẽ chuyển sang trạng thái Dừng. Điều này xảy ra do activity hiện tại được đưa vào trạng thái Resumed hoặc activity mới được khởi chạy toàn màn hình hiển thị hoặc activity hiện tại bị hủy .

Phương thức onStop () rất hữu ích để giải phóng tất cả các tài nguyên ứng dụng không còn cần thiết cho người dùng.

Sau đây là ví dụ về định nghĩa phương pháp onStop ( ) trong activity .

@Override
protected void onStop()
{
    super.onStop();
}

Phương thức callback tiếp theo được mạng lưới hệ thống đưa ra là onRestart ( ), trong trường hợp nếu activity quay trở lại để tương tác với người dùng hoặc onDestroy ( ), trong trường hợp nếu activity kết thúc chạy .

6. onRestart()

Hệ thống sẽ gọi phương pháp onRestart ( ) khi một activity tự khởi động lại sau khi dừng. Phương thức onRestart ( ) sẽ Phục hồi trạng thái activity kể từ thời gian bị dừng .
Phương thức onRestart ( ) trong activity sẽ luôn được theo sau bởi phương pháp onStart ( ) .

7. onDestroy()

Hệ thống sẽ gọi phương pháp onDestroy ( ) trước khi một activity bị hủy và đây là phương pháp callback ở đầu cuối mà activity nhận .
Hệ thống sẽ gọi phương pháp callback onDestory ( ) này khi activity đang kết thúc hoặc mạng lưới hệ thống tàn phá activity để tiết kiệm chi phí khoảng trống .
Sau đây là ví dụ về định nghĩa phương pháp onDestroy ( ) trong activity .

@Override
public void onDestroy()
{
    super.onDestroy();
}

Phương thức onDestroy ( ) sẽ giải phóng tổng thể những tài nguyên không được giải phóng bởi phương pháp callback onStop ( ) trước đó .

IV. Sơ đồ vòng đời activity của Android

Nói chung, trong lớp activity Android sử dụng những phương pháp callback khác nhau như onCreate ( ), onStart ( ), onPause ( ), onRestart ( ), onResume ( ), onStop ( ) và onDestroy ( ) để trải qua những tiến trình khác nhau của vòng đời activity .
Sau đây là trình diễn bằng hình ảnh của vòng đời Android Activity cho thấy cách Activity sẽ hoạt động giải trí trong những tiến trình khác nhau bằng phương pháp callback .

1 png

Bất cứ khi nào người dùng cố gắng rời khỏi một activity như chuyển từ ứng dụng này sang ứng dụng khác, hệ thống sẽ sử dụng các phương thức callback để loại bỏ hoàn toàn hoặc một phần activity để tiếp tục activity từ nơi người dùng rời đi.

Dựa trên những nhu yếu của tất cả chúng ta, tất cả chúng ta hoàn toàn có thể tiến hành activity trong ứng dụng Android bằng phương pháp callback và không thiết yếu phải sử dụng tổng thể những phương pháp callback trong mỗi ứng dụng Android .

V. Ví dụ về vòng đời activity của Android

Sau đây là ví dụ về việc gọi một phương pháp callback activity để xem tiến trình vòng đời của một activity trong ứng dụng Android .
Ở đây tất cả chúng ta sẽ sử dụng ví dụ về ứng dụng được tạo trước đó và triển khai một số ít sửa đổi so với file MainActivity. java như được hiển thị bên dưới để chớp lấy tiến trình bòng đời activity của Android .

1. Code MainActivity.java

Sau đây là những sửa đổi mã được triển khai để gồm có toàn bộ những phương pháp callback vòng đời trong file MainActivity. java nằm trong thư mục \ java \ com.tutlane.helloworld .

package com.tutlane.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("Activity Lifecycle","onCreate invoked");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.d("Activity Lifecycle","onStart invoked");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.d("Activity Lifecycle","onResume invoked");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.d("Activity Lifecycle","onPause invoked");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.d("Activity Lifecycle","onStop invoked");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("Activity Lifecycle","onRestart invoked");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("Activity Lifecycle","onDestroy invoked");
    }
}

Nếu bạn quan sát code ở trên, tất cả chúng ta đã xác lập một câu lệnh như thể bộ ” setContentView ( R.layout.activity _main ) ; ” sẽ giúp tải tổng thể những component UI được xác lập trong file Activity_main. xml và phương pháp Log. d ( ) được sử dụng để tạo thông điệp tường trình .

Trong ứng dụng của chúng ta, chúng ta có thể có nhiều hơn một file activity và chúng ta cần khai báo tất cả các activity trong file AndroidManifest.xml. Trong file xml file kê khai bằng cách sử dụng các thuộc tính hành động MAIN và danh mục LAUNCHER trong các bộ lọc intent (), chúng ta có thể đề cập đến main activity mở ra khi người dùng khởi chạy ứng dụng của chúng ta bằng biểu tượng trình khởi chạy.

Trong trường hợp nếu tất cả chúng ta không đề cập đến hành vi MAIN, mạng lưới hệ thống sẽ quyết định hành động activity nào cần khởi đầu và nếu tất cả chúng ta không thêm hạng mục LAUNCHER cho main activity, hình tượng ứng dụng của tất cả chúng ta sẽ không Open trong list ứng dụng trên màn hình hiển thị chính .
Mã của file AndroidManifest. xml sẽ giống như được hiển thị bên dưới .




    
        
            
                
                
            
        
    

2. Kết quả của ví dụ về vòng đời Android activity

Bây giờ hãy chạy ứng dụng của bạn bằng Thiết bị ảo Android ( AVD ) trong android studio bằng cách nhấp vào hình tượng Play trên thanh công cụ hoặc nhấn Shift + F10. Kết quả ứng dụng của tất cả chúng ta sẽ giống như dưới đây .

2 png

Bây giờ hãy mở Trình giám sát thiết bị Android (Tools -> Android -> Android Device Monitor) để xem các log messages trong cửa sổ LogCat trong android studio như bên dưới.

3 png

Nếu bạn quan sát những log messages trong hành lang cửa số LogCat phương pháp onCreate, onStart và onResume được gọi bởi mạng lưới hệ thống .

Bây giờ hãy nhấp vào nút Home trong Android Emulator, ngay lập tức activity được nhập vào trạng thái Resumed và hệ thống sẽ gọi phương thức onPause () như hiển thị bên dưới.

4 png

Sau một thời hạn, activity sẽ chuyển sang trạng thái Paused và mạng lưới hệ thống sẽ gọi phương pháp onStop ( ) như dưới đây .

5 png

Bây giờ một lần nữa khởi chạy ứng dụng của tất cả chúng ta từ list những ứng dụng trên màn hình hiển thị chính như dưới đây .

6 png

Nếu bạn quan sát các log messages trong cửa sổ LogCat một lần nữa các phương thức onRestart, onStart và onResume được gọi bởi hệ thống như được hiển thị bên dưới.

7 png

Bây giờ bấm vào nút Back trong trình giả lập Android, hệ thống sẽ gọi phương thức onPause và sau một thời gian các phương thức onStop, onDestroy sẽ được gọi như dưới đây.

8 png

Ở đây tất cả chúng ta cần nhớ rằng những phương pháp onCreate và onDestroy sẽ chỉ gọi một lần trong suốt vòng đời activity .
Đây là cách quy trình vòng đời Android activity sẽ gọi những phương pháp khác nhau trong khi chuyển từ quá trình này sang quy trình tiến độ khác .