Các hàm SaveData, LoadData và ClearData

Áp dụng cho: Ứng dụng canvas

Lưu và tải lại một bộ sưu tập từ bộ nhớ của máy chủ ứng dụng.

Lưu ý

Các hàm này hiện có thể được dùng khi phát một ứng dụng trong trình duyệt web dưới dạng tính năng thử nghiệm. Tính năng này được tắt theo mặc định. Để bật, hãy chuyển đến Thiết đặt>Các tính năng sắp ra mắt>Thử nghiệm>Đã bật SaveData, LoadData, ClearData trên trình duyệt web." và bật tùy chọn. Để gửi phản hồi về tính năng thử nghiệm này, hãy truy cập Diễn đàn cộng đồng Power Apps.

Mô tả

Hàm SaveData lưu trữ một bộ sưu tập theo tên để sử dụng sau này.

Hàm LoadData tải lại một bộ sưu tập theo tên đã được lưu trước đó bằng hàm SaveData. Bạn không thể sử dụng hàm này để tải một bộ sưu tập từ nguồn khác.

Chức năng Xóa dữ liệu xóa bộ nhớ có một tên cụ thể hoặc xóa tất cả bộ nhớ được liên kết với ứng dụng nếu không có tên nào được cung cấp.

Lưu ý

  • Tên được chia sẻ giữa Lưu dữ liệu, Tải dữ liệuXóa dữ liệu là một khóa, không phải là một tên tệp. Tên không cần phức tạp vì tên đó là duy nhất cho mỗi ứng dụng và không có nguy cơ xung đột tên. Tên không được chứa bất kỳ ký tự nào sau đây: *".?:\<>|/.
  • SaveData chỉ giới hạn ở 1 MB dữ liệu cho Power Apps chạy trong Teams và trong trình duyệt web. Không có giới hạn cố định đối với Power Apps đang chạy trong trình phát di động nhưng có giới hạn thực tế như được nêu ở bên dưới.
  • Không sử dụng SaveData để lưu trữ dữ liệu nhạy cảm trên web vì dữ liệu này sẽ được lưu trữ ở dạng văn bản thuần túy.

Sử dụng các hàm này để cải thiện hiệu suất khởi động ứng dụng bằng cách:

  • Lưu dữ liệu vào bộ nhớ đệm theo công thức App.OnStart trong lần chạy đầu tiên.
  • Tải lại bộ nhớ đệm cục bộ trong các lần chạy tiếp theo.

Bạn cũng có thể sử dụng các hàm này để thêm các tính năng ngoại tuyến đơn giản vào ứng dụng.

Bạn không thể sử dụng các hàm này trong trình duyệt khi:

  • Tạo ứng dụng trong Power Apps Studio.

Để kiểm tra ứng dụng của bạn, hãy chạy ứng dụng trong Power Apps Mobile trên iPhone hoặc thiết bị Android.

Các hàm này bị giới hạn bởi dung lượng bộ nhớ trống của ứng dụng khi chúng hoạt động trên bộ sưu tập trong bộ nhớ. Bộ nhớ khả dụng có thể thay đổi tùy thuộc vào các yếu tố như:

  • Thiết bị và hệ điều hành.
  • Bộ nhớ mà người dùng Power Apps sử dụng.
  • Độ phức tạp của ứng dụng với các màn hình và công cụ điều khiển.

Kiểm tra ứng dụng của bạn theo các tình huống dự kiến về loại thiết bị bạn mong muốn ứng dụng chạy khi lưu trữ dữ liệu lớn. Nhìn chung sẽ có từ 30 MB đến 70 MB bộ nhớ khả dụng.

Các hàm này phụ thuộc vào bộ sưu tập được xác định hoàn toàn bằng hàm Collect hoặc ClearCollect. Bạn không cần gọi hàm Collect hoặc ClearCollect để tải dữ liệu vào bộ sưu tập cho mục đích xác định bộ sưu tập đó. Một trường hợp thường gặp là sử dụng hàm LoadData sau một hàm SaveData trước đó. Tất cả những gì cần thiết là có sự hiện diện của các hàm này trong một công thức để xác định hoàn toàn cấu trúc của bộ sưu tập. Để biết thêm thông tin, hãy xem cách tạo và loại bỏ các biến.

Dữ liệu đã tải sẽ được thêm vào bộ sưu tập. Sử dụng hàm Clear trước khi gọi hàm LoadData nếu bạn muốn bắt đầu với một bộ sưu tập trống.

Bảo mật dữ liệu

Hãy xem xét cẩn thận việc cách ly và mã hóa dữ liệu được lưu trữ bằng SaveData và quyết định xem liệu cách này có phù hợp với nhu cầu của bạn hay không, đặc biệt nếu các thiết bị được nhiều người dùng chia sẻ.

Dữ liệu được lưu trữ bằng SaveData được người chơi Power Apps cách ly với Power Apps khác. Dữ liệu được lưu trữ dựa trên ID ứng dụng của ứng dụng, tự động cách ly khoảng trống tên SaveData ở giữa Power Apps.

Hệ điều hành và trình duyệt chịu trách nhiệm cách ly dữ liệu giữa Power Apps với các ứng dụng khác trên thiết bị và với các trang web. Ví dụ: hệ điều hành chịu trách nhiệm cách ly dữ liệu được lưu trữ trong Microsoft Outlook khỏi dữ liệu được lưu trữ trong Power Apps, đồng thời cũng cách ly dữ liệu đó khỏi các trang web như Bing.com hoặc PowerApps.com. Cơ sở hộp cát ứng dụng tích hợp trong hệ điều hành được sử dụng cho SaveData bộ lưu trữ mà người dùng thường không thể truy cập hoặc ẩn.

Khi sử dụng cùng một ứng dụng, hệ điều hành và trình duyệt cũng chịu trách nhiệm tách biệt dữ liệu giữa những người dùng ở cấp hệ điều hành khác nhau. Ví dụ: nếu hai người dùng khác nhau dùng chung một máy tính và sử dụng hai thông tin đăng nhập Windows khác nhau thì hệ điều hành sẽ chịu trách nhiệm cách ly dữ liệu giữa hai người dùng Windows.

Dữ liệu có thể được tách biệt hoặc không giữa những người dùng Power Apps khác nhau nếu người dùng hệ điều hành giống nhau. Không phải mọi Power Apps người chơi đều xử lý vấn đề này theo cách giống nhau. Ví dụ: khi đăng nhập với cùng một người dùng Windows, trong Power Apps trình phát, người dùng đăng xuất Power Apps và đăng nhập với tư cách một người dùng Power Apps khác. Dữ liệu được lưu trữ trong một ứng dụng trước khi thay đổi Power Apps người dùng, người dùng Power Apps thứ hai trong cùng một ứng dụng có thể truy cập được. Dữ liệu cũng có thể bị xóa và người dùng Power Apps đầu tiên có thể không truy cập được dữ liệu đó nữa. Hành vi khác nhau giữa Power Apps người chơi.

Hệ điều hành cũng có thể mã hóa dữ liệu hoặc bạn có thể sử dụng công cụ quản lý thiết bị di động như Microsoft Intune. Dữ liệu được lưu trữ khi chạy ứng dụng trong trình duyệt web không được mã hóa.

Cú pháp

SaveData( Collection, Name )
LoadData( Collection, Name [, IgnoreNonexistentFile ])

  • Collection – Bắt buộc. Bộ sưu tập sẽ được lưu trữ hoặc tải.
  • Name - Bắt buộc. Tên của bộ lưu trữ. Tên phải giống nhau để lưu và tải cùng một bộ dữ liệu. Không gian tên không được chia sẻ với các ứng dụng khác. Tên không được chứa bất kỳ ký tự nào sau đây: *".?:\<>|/.
  • IgnoreNonexistentFile - Không bắt buộc. Một giá trị Boolean cho biết phải làm gì nếu tệp không tồn tại. Sử dụng false (mặc định) để trả về lỗi và true để khắc phục lỗi.

Xóa dữ liệu ([Tên])

  • Tên - Không bắt buộc. Tên của bộ nhớ đã được lưu trước đó với chức năng Lưu dữ liệu. Nếu không cung cấp Tên, tất cả bộ nhớ liên quan đến ứng dụng sẽ bị xóa.

Ví dụ

Công thức Mô tả Kết quả
SaveData( LocalCache, "MyCache" ) Lưu bộ sưu tập LocalCache (Bộ nhớ đệm cục bộ) cho thiết bị của người dùng dưới tên "MyCache" (Bộ nhớ đệm của tôi), phù hợp với LoadData (Tải dữ liệu) để truy xuất về sau. Dữ liệu được lưu vào máy chủ ứng dụng dưới tên "MyCache".
LoadData( LocalCache, "MyCache" ) Tải bộ sưu tập LocalCache (Bộ nhớ đệm cục bộ) từ thiết bị của người dùng dưới tên "MyCache" (Bộ nhớ đệm của tôi), được lưu trữ trước đó bằng một lệnh gọi đến SaveData (Lưu dữ liệu). Dữ liệu được tải từ máy chủ ứng dụng dưới tên "MyCache".
ClearData( "MyCache" ) Xóa bộ nhớ tên là "MyCache". Mọi dữ liệu được lưu trữ dưới tên này sẽ không còn khả dụng thông qua chức năng Tải dữ liệu. Dữ liệu được xóa khỏi máy chủ ứng dụng dưới tên "MyCache".
ClearData() Xóa tất cả bộ nhớ được liên kết với ứng dụng này. Dữ liệu được lưu trữ bởi các ứng dụng khác không bị ảnh hưởng. Tất cả dữ liệu sẽ bị xóa khỏi máy chủ ứng dụng.

Ví dụ về các tính năng ngoại tuyến đơn giản

Ví dụ đơn giản sau đây ghi lại và lưu trữ tên cũng như hình ảnh của các mục hàng ngày trong khi ngoại tuyến. Ví dụ này lưu trữ thông tin trong bộ lưu trữ cục bộ của thiết bị để sử dụng về sau. Điều này cho phép đóng ứng dụng hoặc khởi động lại thiết bị mà không mất dữ liệu.

Lưu ý

Ví dụ này sử dụng tùy chọn điều khiển máy ảnh để chụp ảnh. Bởi vì SaveData chỉ giới hạn ở 1 MB dữ liệu khi chạy trong Teams hoặc trình duyệt web, nên ví dụ này sẽ không hoạt động với nhiều hình ảnh. Ngoài ra, tùy thuộc vào máy ảnh, nó có thể không hoạt động với dù chỉ là một hình ảnh. Sử dụng một thiết bị để thực hiện ví dụ đầy đủ này hoặc xóa phần tùy chọn điều khiển máy ảnh và hình ảnh của ví dụ này để chạy trong Teams hoặc trong trình duyệt web.

  1. Tạo một ứng dụng bảng canvas trống có bố cục bảng. Để biết thêm chi tiết, hãy đọc cách tạo ứng dụng từ một mẫu rồi chọn Tablet layout (Bố cục bảng) trong Blank app (Ứng dụng trống).

  2. Thêm một công cụ điều khiển Text input (Nhập văn bản) và một công cụ điều khiển Camera (Máy ảnh) rồi sắp xếp chúng tương đối như hình minh họa:

    Đã thêm tính năng nhập văn bản và điều khiển camera vào màn hình trống.

  3. Thêm một công cụ điều khiển Button (Nút).

  4. Bấm đúp vào công cụ điều khiển nút để thay đổi văn bản nút thành Add Item (hoặc sửa đổi thuộc tính Văn bản).

  5. Việc đặt thuộc tính OnSelect của công cụ điều khiển nút cho công thức này sẽ thêm một mục vào bộ sưu tập:

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    Một điều khiển nút đã được thêm với văn bản

  6. Thêm một công cụ điều khiển Button (Nút).

  7. Bấm đúp vào công cụ điều khiển nút để thay đổi văn bản nút thành Save Data (hoặc sửa đổi thuộc tính Văn bản).

  8. Đặt thuộc tính OnSelect của công cụ điều khiển nút cho công thức này để lưu bộ sưu tập vào thiết bị cục bộ:

    SaveData( MyItems, "LocalSavedItems" )
    

    Một nút điều khiển đã được thêm cùng với văn bản

    Bạn có thể thoải mái kiểm tra nút vì việc đó không ảnh hưởng đến bất cứ điều gì. Tuy nhiên, bạn sẽ chỉ thấy một lỗi khi đang tạo trong trình duyệt web. Trước tiên, hãy lưu ứng dụng và mở trên thiết bị trước khi bạn làm theo các bước tiếp theo để kiểm tra công thức này:

  9. Thêm một công cụ điều khiển Button (Nút) thứ ba.

  10. Bấm đúp vào công cụ điều khiển nút này để thay đổi văn bản nút thành Load Data (hoặc sửa đổi thuộc tính Văn bản).

  11. Đặt thuộc tính OnSelect của công cụ điều khiển nút cho công thức này để tải bộ sưu tập từ thiết bị cục bộ:

    LoadData( MyItems, "LocalSavedItems" )
    

    Một điều khiển nút đã được thêm với văn bản

  12. Thêm một công cụ điều khiển Gallery (Thư viện) với bố cục Vertical (Dọc) bao gồm các vùng hình ảnh và văn bản:

    Lựa chọn đa dạng thư viện,

  13. Khi được nhắc, hãy chọn bộ sưu tập MyItems dưới dạng nguồn dữ liệu cho thư viện này. Thao tác này sẽ đặt thuộc tính Items (Mục) của công cụ điều khiển Gallery (Thư viện):

    Lựa chọn thư viện của nguồn dữ liệu.Điều khiển hình ảnh trong mẫu thư viện phải mặc định thuộc tính Hình ảnh của nó thành ThisItem.Picture và các điều khiển nhãn phải cả hai mặc định thuộc tính Văn bản của họ thành ThisItem.Item. Kiểm tra những công thức này nếu sau khi thêm các mục trong các bước sau, bạn không thấy có gì trong thư viện.

  14. Đặt công cụ điều khiển ở bên phải của các công cụ điều khiển khác:

    Thư viện được đặt lại vị trí ở bên phải màn hình.

  15. Lưu ứng dụng của bạn. Nếu đó là lần đầu tiên lưu ứng dụng, thì bạn không cần phải phát hành ứng dụng đó. Nếu đó không phải là lần đầu tiên, hãy phát hành ứng dụng đó sau khi bạn lưu.

  16. Mở ứng dụng của bạn trên thiết bị như điện thoại hoặc máy tính bảng. Hàm SaveDataLoadData không dùng được trong Studio hoặc trình duyệt web. Làm mới danh sách ứng dụng của bạn nếu bạn không thấy ứng dụng của mình ngay lập tức. Có thể mất vài giây để ứng dụng xuất hiện trên thiết bị của bạn. Đăng xuất và đăng nhập lại vào tài khoản của bạn cũng có thể giúp ích.

    Ứng dụng đang chạy mà không có mục nào được thêm vào.Sau khi tải xuống ứng dụng, bạn có thể ngắt kết nối mạng và chạy ứng dụng ngoại tuyến.

  17. Nhập tên và chụp ảnh của một mục.

  18. Chọn nút Add Item (Thêm mục). Lặp lại việc thêm các mục một vài lần để tải bộ sưu tập của bạn lên.

    Ứng dụng đang chạy với ba mục được thêm vào.

  19. Chọn nút Save Data (Lưu dữ liệu). Điều này sẽ lưu dữ liệu trong bộ sưu tập vào thiết bị cục bộ của bạn.

  20. Đóng ứng dụng. Bộ sưu tập của bạn trong bộ nhớ sẽ bị mất, bao gồm tất cả tên mục và hình ảnh, nhưng chúng sẽ vẫn còn trong bộ lưu trữ của thiết bị.

  21. Khởi chạy lại ứng dụng. Bộ sưu tập trong bộ nhớ sẽ lại hiển thị dưới dạng trống trong thư viện.

    Ứng dụng lại chạy mà không có mục nào được thêm vào.

  22. Chọn nút Load Data (Tải dữ liệu). Bộ sưu tập sẽ được khôi phục từ dữ liệu lưu trữ trên thiết bị và các mục của bạn sẽ quay lại thư viện. Bộ sưu tập trống trước khi nút này gọi hàm LoadData. Bạn không cần gọi hàm Collect hoặc ClearCollect trước khi tải dữ liệu từ bộ lưu trữ.

    Ứng dụng đang chạy với ba mục được khôi phục sau khi gọi hàm LoadData.

  23. Chọn lại nút Load Data (Tải dữ liệu). Dữ liệu lưu trữ sẽ được thêm vào cuối bộ sưu tập và một thanh cuộn sẽ xuất hiện trên thư viện. Nếu bạn muốn thay thế chứ không phải là thêm, thì trước tiên hãy sử dụng hàm Clear để xóa bộ sưu tập trước khi gọi hàm LoadData.

    Ứng dụng đang chạy với sáu mục được khôi phục sau khi gọi hàm LoadData hai lần.

Ví dụ về các tính năng ngoại tuyến nâng cao hơn

Để biết ví dụ chi tiết, hãy xem bài viết về các tính năng ngoại tuyến đơn giản.