Đo lường thời gian tải và kết xuất màn hình bằng tính năng Giám sát hiệu suất Firebase

1. Giới thiệu

Lần cập nhật gần đây nhất: ngày 11 tháng 03 năm 2021

Tại sao chúng ta cần đo lường hiệu suất của Lượt xem?

Khung hiển thị là một phần quan trọng của các ứng dụng Android ảnh hưởng trực tiếp đến trải nghiệm người dùng. Ví dụ: Hoạt động hoặc Mảnh chứa giao diện người dùng lưu giữ các thành phần Khung hiển thị mà người dùng tương tác. Người dùng không thể xem toàn bộ nội dung giao diện người dùng cho đến khi nội dung đó được vẽ hoàn toàn trên màn hình. Màn hình chậm và bị treo sẽ trực tiếp ảnh hưởng đến khả năng tương tác của người dùng với ứng dụng và tạo ra trải nghiệm không tốt cho người dùng.

Tính năng Giám sát hiệu suất Firebase không cung cấp sẵn các chỉ số hiệu suất này phải không?

Tính năng Giám sát hiệu suất Firebase tự động ghi lại ngay một số dữ liệu về hiệu suất, chẳng hạn như thời gian khởi động ứng dụng (tức là thời gian tải chỉ cho Hoạt động đầu tiên) và hiệu suất kết xuất màn hình (tức là khung hình chậm và bị treo cho Hoạt động nhưng không phải cho Mảnh). Tuy nhiên, các ứng dụng trong ngành thường không có nhiều Hoạt động mà chỉ có một Hoạt động và nhiều Mảnh. Ngoài ra, nhiều ứng dụng thường triển khai Thành phần hiển thị tuỳ chỉnh riêng cho các trường hợp sử dụng phức tạp hơn. Vì vậy, bạn nên hiểu cách đo lường thời gian tải và hiệu suất kết xuất màn hình của cả Hoạt động và Mảnh bằng cách đo lường dấu vết mã tuỳ chỉnh trong ứng dụng. Bạn có thể dễ dàng mở rộng lớp học lập trình này để đo lường hiệu suất của các thành phần của Chế độ xem tuỳ chỉnh.

Kiến thức bạn sẽ học được

  • Cách thêm tính năng Giám sát hiệu suất Firebase vào ứng dụng Android
  • Tìm hiểu về việc tải một Hoạt động hoặc một Mảnh
  • Cách đo lường dấu vết mã tuỳ chỉnh để đo lường thời gian tải của một Hoạt động hoặc Mảnh
  • Tìm hiểu về kết xuất màn hình và thế nào là khung hình bị chậm/bị treo
  • Cách đo lường dấu vết mã tuỳ chỉnh bằng các chỉ số để ghi lại màn hình Chậm/Đứng
  • Cách xem các chỉ số được thu thập trong bảng điều khiển của Firebase

Bạn cần có

  • Android Studio 4.0 trở lên
  • Một thiết bị/trình mô phỏng Android
  • Phiên bản Java 8 trở lên

2. Thiết lập

Lấy mã nguồn

Chạy các lệnh sau để sao chép mã mẫu cho lớp học lập trình này. Thao tác này sẽ tạo một thư mục có tên codelab-measure-android-view-performance trên máy của bạn:

$ git clone https://github.com/FirebaseExtended/codelab-measure-android-view-performance.git
$ cd codelab-measure-android-view-performance

Nếu không có git trên máy của mình, bạn cũng có thể tải mã này trực tiếp xuống qua GitHub.

Nhập dự án measure-view-performance-start vào Android Studio. Bạn có thể sẽ thấy một số lỗi biên dịch hoặc cảnh báo về việc thiếu tệp google-services.json. Chúng tôi sẽ sửa lỗi này trong phần tiếp theo của bước này.

Trong lớp học lập trình này, chúng ta sẽ sử dụng trình bổ trợ Trợ lý Firebase để đăng ký ứng dụng Android với một dự án Firebase, đồng thời thêm các tệp cấu hình, trình bổ trợ và phần phụ thuộc cần thiết của Firebase vào dự án Android – tất cả đều ngay trong Android Studio!

Kết nối ứng dụng của bạn với Firebase

  1. Chuyển đến Android Studio/Trợ giúp > Kiểm tra bản cập nhật để đảm bảo rằng bạn đang sử dụng phiên bản Android Studio và Trợ lý Firebase mới nhất.
  2. Chọn Tools (Công cụ) > Firebase để mở ngăn Assistant (Trợ lý).

e791bed0999db1e0.pngs

  1. Chọn Giám sát hiệu suất để thêm vào ứng dụng của bạn, sau đó nhấp vào Bắt đầu sử dụng Giám sát hiệu suất.
  2. Nhấp vào Kết nối với Firebase để kết nối dự án Android của bạn với Firebase (thao tác này sẽ mở bảng điều khiển của Firebase trong trình duyệt của bạn).
  3. Trong bảng điều khiển của Firebase, hãy nhấp vào Thêm dự án, sau đó nhập tên dự án Firebase (nếu đã có dự án Firebase, bạn có thể chọn dự án hiện có). Nhấp vào Tiếp tục và chấp nhận các điều khoản để tạo dự án Firebase và một Ứng dụng Firebase mới.
  4. Tiếp theo, bạn sẽ thấy một hộp thoại để Kết nối ứng dụng Firebase mới với dự án Android Studio.

42c498d28ead2b77.pngS

  1. Quay lại Android Studio, trong ngăn Assistant (Trợ lý), bạn sẽ thấy thông báo xác nhận rằng ứng dụng của bạn đã kết nối với Firebase.

dda8bdd9488167a0.png.

Thêm tính năng Giám sát hiệu suất vào ứng dụng

Trong ngăn Assistant (Trợ lý) trong Android Studio, hãy nhấp vào Add Performance Monitoring to your app (Thêm giám sát hiệu suất vào ứng dụng).

Bạn sẽ thấy một hộp thoại Accept Changes (Chấp nhận các thay đổi), sau đó Android Studio sẽ đồng bộ hoá ứng dụng của bạn để đảm bảo đã thêm tất cả phần phụ thuộc cần thiết.

9b58145acc4be030.pngS

Cuối cùng, bạn sẽ thấy thông báo thành công trong ngăn Assistant (Trợ lý) trong Android Studio cho biết rằng tất cả các phần phụ thuộc đều được thiết lập đúng cách.

aa0d46fc944e0c0b.png.

Bạn có thể bật tính năng ghi nhật ký gỡ lỗi bằng cách làm theo hướng dẫn trong bước "(Không bắt buộc) Bật tính năng ghi nhật ký gỡ lỗi". Hướng dẫn tương tự cũng có trong tài liệu công khai.

3. Chạy ứng dụng

Nếu bạn đã tích hợp thành công ứng dụng của mình với SDK giám sát hiệu suất thì dự án hiện sẽ được biên dịch. Trong Android Studio, hãy nhấp vào Run (Chạy) > Chạy "ứng dụng" để tạo và chạy ứng dụng trên trình mô phỏng/thiết bị Android đã kết nối.

Ứng dụng có 2 nút để đưa bạn đến một Hoạt động và Mảnh tương ứng, như sau:

410d8686b4f45c33.pngS

Trong các bước sau của lớp học lập trình này, bạn sẽ tìm hiểu cách đo lường thời gian tải và hiệu suất kết xuất màn hình của Hoạt động hoặc Mảnh.

4. Tìm hiểu về việc tải một Hoạt động hoặc Mảnh

Ở bước này, chúng ta sẽ tìm hiểu xem hệ thống sẽ làm gì trong quá trình tải một Hoạt động hoặc Mảnh.

Tìm hiểu về cách tải một Hoạt động

Đối với một Hoạt động, thời gian tải được định nghĩa là thời gian bắt đầu từ khi đối tượng Hoạt động được tạo cho đến khi Khung hình đầu tiên được vẽ hoàn toàn trên màn hình (đây là khi người dùng sẽ nhìn thấy giao diện người dùng đầy đủ của Hoạt động lần đầu tiên). Để đo lường xem ứng dụng của bạn có được vẽ đầy đủ hay không, bạn có thể sử dụng phương thức reportFullyDrawn() để đo lường thời gian giữa thời điểm chạy ứng dụng và thời điểm hiển thị toàn bộ tài nguyên cũng như hệ phân cấp khung hiển thị.

Ở cấp độ cao, khi ứng dụng của bạn gọi startActivity(Intent), hệ thống sẽ tự động thực hiện các quy trình sau đây. Mỗi quy trình cần một khoảng thời gian để hoàn tất, tức là khoảng thời gian từ khi tạo Hoạt động đến khi người dùng nhìn thấy giao diện người dùng của Hoạt động trên màn hình của họ.

c20d14b151549937.pngS

Tìm hiểu về việc tải một mảnh

Tương tự như Hoạt động, thời gian tải cho một Mảnh được định nghĩa là thời gian bắt đầu từ khi Mảnh được đính kèm vào Hoạt động của máy chủ lưu trữ cho đến khi Khung hình đầu tiên của Chế độ xem mảnh được vẽ hoàn toàn trên màn hình.

5. Đo lường thời gian tải của một Hoạt động

Sự chậm trễ trong khung hình đầu tiên có thể dẫn đến trải nghiệm người dùng kém, vì vậy điều quan trọng là phải hiểu được độ trễ khi tải ban đầu mà người dùng của bạn đang gặp phải. Bạn có thể đo lường dấu vết mã tuỳ chỉnh để đo lường thời gian tải này:

  1. Bắt đầu dấu vết mã tuỳ chỉnh (có tên là TestActivity-LoadTime) trong lớp Hoạt động ngay khi đối tượng Hoạt động được tạo.

TestActivity.java

public class TestActivity extends AppCompatActivity {   
    // TODO (1): Start trace recording as soon as the Activity object is created.
    private final Trace viewLoadTrace = FirebasePerformance.startTrace("TestActivity-LoadTime");

    // ...

}
  1. Ghi đè lệnh gọi lại onCreate() rồi thêm Chế độ xem bằng phương thức setContentView().
@Override     
public void onCreate(Bundle savedInstanceState) {    
    super.onCreate(savedInstanceState);          

    // Current Activity's main View (as defined in the layout xml file) is inflated after this            
    setContentView(R.layout.activity_test);          

    // ...

    // TODO (2): Get the View added by Activity's setContentView() method.         
    View mainView = findViewById(android.R.id.content);     

    // ...
}
  1. Chúng tôi đã triển khai FistDrawListener, có hai lệnh gọi lại: onDrawingStart()onDrawingFinish() (xem phần tiếp theo bên dưới để biết thêm thông tin chi tiết về FirstDrawListener và những yếu tố có thể ảnh hưởng đến hiệu suất của lệnh này). Đăng ký FirstDrawListener khi kết thúc lệnh gọi lại onCreate() của Hoạt động. Bạn nên dừng viewLoadTrace trong lệnh gọi lại onDrawingFinish().

TestActivity.java

    // TODO (3): Register the callback to listen for first frame rendering (see
    //  "OnFirstDrawCallback" in FirstDrawListener) and stop the trace when View drawing is
    //  finished.
    FirstDrawListener.registerFirstDrawListener(mainView, new FirstDrawListener.OnFirstDrawCallback() {              
        @Override             
        public void onDrawingStart() {       
          // In practice you can also record this event separately
        }

        @Override             
        public void onDrawingFinish() {
            // This is when the Activity UI is completely drawn on the screen
            viewLoadTrace.stop();             
        }         
    });
  1. Chạy lại ứng dụng. Sau đó, hãy lọc logcat bằng "Chỉ số theo dõi nhật ký". Nhấn vào nút LOAD ACTIVITY và tìm nhật ký như dưới đây:
I/FirebasePerformance: Logging trace metric: TestActivity-LoadTime (duration: XXXms)

🎉 Xin chúc mừng! Bạn đã đo lường thành công thời gian tải của một Hoạt động và báo cáo dữ liệu đó cho Giám sát hiệu suất Firebase. Chúng ta sẽ xem chỉ số được ghi lại trong bảng điều khiển của Firebase ở phần sau của lớp học lập trình này.

Mục đích của FirstDrawListener

Trong phần vừa ở trên, chúng ta đã đăng ký một FirstDrawListener. Mục đích của FirstDrawListener là đo lường thời điểm khung hình đầu tiên bắt đầu và kết thúc quá trình vẽ.

Hàm này triển khai ViewTreeObserver.OnDrawListener và ghi đè lệnh gọi lại onDraw() được gọi khi cây thành phần hiển thị sắp được vẽ. Sau đó, phương thức này gói kết quả để cung cấp 2 lệnh gọi lại tiện ích onDrawingStart()onDrawingFinish().

Bạn có thể tìm thấy mã hoàn chỉnh cho FirstDrawListener trong mã nguồn của lớp học lập trình này.

6. Đo thời gian tải của một Mảnh

Việc đo lường thời gian tải của một Mảnh cũng tương tự như cách chúng tôi đo lường thời gian đó cho một Hoạt động, nhưng có một số điểm khác biệt nhỏ. Một lần nữa, chúng ta sẽ đo lường dấu vết mã tuỳ chỉnh:

  1. Ghi đè lệnh gọi lại onAttach() và bắt đầu ghi lại fragmentLoadTrace. Chúng tôi sẽ đặt tên dấu vết này là Test-Fragment-LoadTime.

Như đã giải thích trong bước trước, đối tượng Mảnh có thể được tạo bất cứ lúc nào, nhưng đối tượng này chỉ hoạt động khi được đính kèm vào Hoạt động của máy chủ lưu trữ.

TestFragment.java

public class TestFragment extends Fragment {

   // TODO (1): Declare the Trace variable.
   private Trace fragmentLoadTrace;

   @Override
   public void onAttach(@NonNull Context context) {
       super.onAttach(context);

       // TODO (2): Start trace recording as soon as the Fragment is attached to its host Activity.
       fragmentLoadTrace = FirebasePerformance.startTrace("TestFragment-LoadTime");
   }
  1. Đăng ký FirstDrawListener trong lệnh gọi lại onViewCreated(). Sau đó, tương tự như ví dụ về Hoạt động, hãy dừng dấu vết trong onDrawingFinish().

TestFragment.java

@Override
public void onViewCreated(@NonNull View mainView, Bundle savedInstanceState) {
   super.onViewCreated(mainView, savedInstanceState);

   // ...

   // TODO (3): Register the callback to listen for first frame rendering (see
   //  "OnFirstDrawCallback" in FirstDrawListener) and stop the trace when view drawing is
   //  finished.
   FirstDrawListener.registerFirstDrawListener(mainView, new FirstDrawListener.OnFirstDrawCallback() {

       @Override
       public void onDrawingStart() {
           // In practice you can also record this event separately
       }

       @Override
       public void onDrawingFinish() {
           // This is when the Fragment UI is completely drawn on the screen
           fragmentLoadTrace.stop();
       }
   });
  1. Chạy lại ứng dụng. Sau đó, hãy lọc logcat bằng "Chỉ số theo dõi nhật ký". Nhấn vào nút LOAD FRAGMENT và tìm nhật ký như dưới đây:
I/FirebasePerformance: Logging trace metric: TestFragment-LoadTime (duration: XXXms)

🎉 Xin chúc mừng! Bạn đã đo lường thành công thời gian tải của một Mảnh và báo cáo dữ liệu đó cho Giám sát hiệu suất Firebase. Chúng ta sẽ xem chỉ số được ghi lại trong bảng điều khiển của Firebase ở phần sau của lớp học lập trình này.

7. Tìm hiểu về kết xuất màn hình và thế nào là khung hình bị chậm/bị treo

Kết xuất giao diện người dùng là hành động tạo một khung hình từ ứng dụng và hiện khung hình đó trên màn hình. Để đảm bảo quá trình tương tác của người dùng với ứng dụng diễn ra suôn sẻ, ứng dụng của bạn phải kết xuất các khung hình trong khoảng thời gian dưới 16 mili giây để đạt được 60 khung hình/giây ( tại sao lại là 60 khung hình/giây?). Nếu ứng dụng của bạn kết xuất hình ảnh trên giao diện người dùng với tốc độ chậm, thì hệ thống buộc phải bỏ qua một số khung hình và người dùng sẽ nhận thấy tình trạng giật hình trong ứng dụng của bạn. Chúng tôi gọi đây là hiện tượng giật.

Tương tự như vậy, khung hình bị treo là các khung giao diện người dùng mất hơn 700 mili giây để hiển thị. Độ trễ này là một vấn đề vì ứng dụng của bạn dường như bị nghẽn và không phản hồi hoạt động đầu vào của người dùng gần một giây trong khi khung hình đang kết xuất.

8. Đo lường khung hình Chậm/bị treo của một mảnh

Tính năng Giám sát hiệu suất Firebase tự động ghi lại các khung hình chậm/bị treo cho một Hoạt động (nhưng chỉ khi được tăng tốc phần cứng). Tuy nhiên, tính năng này hiện chưa được cung cấp cho Mảnh. Khung hình chậm/bị treo của một Mảnh được định nghĩa là các khung hình chậm/bị treo cho toàn bộ Hoạt động giữa các lệnh gọi lại onFragmentAttached()onFragmentDetached() trong vòng đời của Mảnh.

Lấy động lực từ lớp AppStateMonitor (là một phần của SDK giám sát hiệu suất chịu trách nhiệm ghi lại dấu vết trên màn hình cho Hoạt động), chúng tôi đã triển khai lớp ScreenTrace (là một phần của kho lưu trữ mã nguồn này trong lớp học lập trình). Lớp ScreenTrace có thể được nối với phương thức gọi lại trong vòng đời của FragmentManager của Hoạt động để chụp các khung hình bị chậm/bị treo. Lớp này cung cấp 2 API công khai:

  • recordScreenTrace(): Bắt đầu ghi lại dấu vết màn hình
  • sendScreenTrace(): Dừng ghi dấu vết màn hình và đính kèm các chỉ số tuỳ chỉnh để ghi lại số lượng khung hình Tổng, Chậm và Bị treo

Bằng cách đính kèm các chỉ số tuỳ chỉnh này, dấu vết trên màn hình cho Mảnh có thể được xử lý theo cách tương tự như dấu vết trên màn hình của một Hoạt động. Dấu vết này có thể xuất hiện cùng với các dấu vết kết xuất màn hình khác trong trang tổng quan Hiệu suất của bảng điều khiển của Firebase.

Dưới đây là cách ghi nhật ký dấu vết màn hình cho Mảnh:

  1. Khởi động lớp ScreenTrace trong Hoạt động lưu trữ Mảnh.

MainActivity.java

// Declare the Fragment tag
private static final String FRAGMENT_TAG = TestFragment.class.getSimpleName();

// TODO (1): Declare the ScreenTrace variable.
private ScreenTrace screenTrace;

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

    // TODO (2): Initialize the ScreenTrace variable.
    screenTrace = new ScreenTrace(this, FRAGMENT_TAG);

    // ...
}
  1. Khi bạn tải Mảnh, hãy đăng ký FragmentLifecycleCallbacks rồi ghi đè các lệnh gọi lại onFragmentAttached()onFragmentDetached(). Chúng tôi đã thực hiện việc này cho bạn. Bạn cần bắt đầu ghi lại dấu vết trên màn hình trong lệnh gọi lại onFragmentAttached() và dừng ghi trong lệnh gọi lại onFragmentDetached().

MainActivity.java

private final FragmentManager.FragmentLifecycleCallbacks fragmentLifecycleCallbacks =
       new FragmentManager.FragmentLifecycleCallbacks() {

           @Override
           public void onFragmentAttached(@NonNull FragmentManager fm, @NonNull Fragment f, @NonNull Context context) {
               super.onFragmentAttached(fm, f, context);

               // TODO (3): Start recording the screen traces as soon as the Fragment is
               //  attached to its host Activity.
               if (FRAGMENT_TAG.equals(f.getTag()) && screenTrace.isScreenTraceSupported()) {
                   screenTrace.recordScreenTrace();
               }
           }

           @Override
           public void onFragmentDetached(@NonNull FragmentManager fm, @NonNull Fragment f) {
               super.onFragmentDetached(fm, f);

               // TODO (4): Stop recording the screen traces as soon as the Fragment is
               //  detached from its host Activity.
               if (FRAGMENT_TAG.equals(f.getTag()) && screenTrace.isScreenTraceSupported()) {
                   screenTrace.sendScreenTrace();
               }

               // Unregister Fragment lifecycle callbacks after the Fragment is detached
               fm.unregisterFragmentLifecycleCallbacks(fragmentLifecycleCallbacks);
           }
       };
  1. Chạy lại ứng dụng. Sau đó, hãy nhấn vào nút LOAD FRAGMENT. Đợi vài giây, sau đó nhấp vào back button trên thanh điều hướng ở dưới cùng.

Lọc logcat theo "Chỉ số dấu vết ghi nhật ký", sau đó tìm các nhật ký như dưới đây:

I/FirebasePerformance: Logging trace metric: _st_MainActivity-TestFragment (duration: XXXms)

Lọc logcat bằng "FireperfViews", sau đó tìm các nhật ký như dưới đây:

D/FireperfViews: sendScreenTrace MainActivity-TestFragment, name: _st_MainActivity-TestFragment, total_frames: XX, slow_frames: XX, frozen_frames: XX

🎉 Xin chúc mừng! Bạn đã đo lường thành công khung hình bị Chậm/bị treo cho một mảnh và báo cáo dữ liệu đó cho chức năng Giám sát hiệu suất Firebase. Chúng ta sẽ xem các chỉ số được ghi lại trong bảng điều khiển của Firebase ở phần sau của lớp học lập trình này.

9. Kiểm tra các chỉ số trong bảng điều khiển của Firebase

  1. Trong logcat, hãy nhấp vào URL của bảng điều khiển của Firebase để truy cập vào trang chi tiết để theo dõi. 200608480968_20040808.jpeg

Ngoài ra, trong bảng điều khiển của Firebase, hãy chọn dự án có ứng dụng của bạn. Trong bảng điều khiển bên trái, hãy tìm nút Phát hành & Giám sát, rồi nhấp vào Hiệu suất.

  • Trong thẻ chính của Trang tổng quan, hãy di chuyển xuống bảng dấu vết, sau đó nhấp vào thẻ Dấu vết tuỳ chỉnh. Trong bảng này, bạn sẽ thấy các dấu vết mã tuỳ chỉnh mà chúng tôi đã thêm trước đó cùng với một số dấu vết có sẵn, chẳng hạn như dấu vết _app_start.
  • Tìm hai dấu vết mã tuỳ chỉnh, TestActivity-LoadTimeTestFragment-LoadTime. Nhấp vào Thời lượng cho một trong hai mục để xem thêm thông tin chi tiết về dữ liệu được thu thập.

a0d8455c5269a590.pngS

  1. Trang chi tiết về dấu vết mã tuỳ chỉnh cho bạn biết thông tin về thời lượng của dấu vết (tức là thời gian tải đo được).

5e92a307b7410d8b.png.

  1. Bạn cũng có thể xem dữ liệu hiệu suất cho dấu vết màn hình tuỳ chỉnh.
  • Quay lại thẻ Trang tổng quan chính, di chuyển xuống bảng dấu vết, sau đó nhấp vào thẻ Kết xuất màn hình. Trong bảng này, bạn sẽ thấy các dấu vết trên màn hình tuỳ chỉnh mà chúng tôi đã thêm trước đó cùng với mọi dấu vết có sẵn trên màn hình, chẳng hạn như dấu vết MainActivity.
  • Tìm dấu vết màn hình tuỳ chỉnh của bạn, MainActivity-TestFragment. Nhấp vào tên dấu vết để xem dữ liệu tổng hợp về kết xuất chậm và khung hình bị treo.

ee7890c7e2c28740.pngS

10. Xin chúc mừng

Xin chúc mừng! Bạn đã đo lường thành công thời gian tải và hiệu suất kết xuất màn hình của một Hoạt động và một Mảnh bằng tính năng Giám sát hiệu suất Firebase!

Những thành tựu bạn đã đạt được

Bước tiếp theo

Ngoài tính năng theo dõi tuỳ chỉnh, Firebase Performance cung cấp cho bạn thêm nhiều cách đo lường hiệu suất cho ứng dụng. Loại chiến dịch này tự động đo lường thời gian khởi động ứng dụng, ứng dụng trong nền trước và dữ liệu hiệu suất của ứng dụng trong nền. Đã đến lúc bạn kiểm tra các chỉ số này trong Bảng điều khiển của Firebase.

Ngoài ra, Firebase Performance cung cấp tính năng tự động giám sát yêu cầu mạng HTTP/S. Bằng cách đó, bạn có thể dễ dàng đo lường các yêu cầu mạng mà không cần viết một dòng mã nào. Bạn có thể thử gửi một số yêu cầu về mạng từ ứng dụng của mình và tìm các chỉ số trong bảng điều khiển của Firebase không?

Điểm thưởng

Giờ đây, khi đã biết cách đo lường thời gian tải và hiệu suất hiển thị màn hình của Hoạt động/Mảnh bằng cách sử dụng dấu vết mã tuỳ chỉnh, bạn có thể khám phá cơ sở mã nguồn mở của chúng tôi để xem liệu bạn có thể ghi lại các chỉ số đó ngay lập tức cho bất kỳ Hoạt động/Mảnh nào trong ứng dụng hay không? Đừng ngại gửi PR nếu bạn muốn :-)

11. Học thêm

Khi biết những gì đang xảy ra trong quá trình tải một Hoạt động, bạn sẽ hiểu rõ hơn về các đặc điểm về hiệu suất của ứng dụng. Ở bước trước, chúng tôi đã mô tả ở cấp độ tổng quát những gì sẽ xảy ra trong quá trình tải một Hoạt động, nhưng sơ đồ sau đây mô tả từng giai đoạn chi tiết hơn nhiều.

cd61c1495fad7961.png.