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ệu và Xó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 cân nhắc kỹ lưỡng việc cô lập và mã hóa dữ liệu được lưu trữ bằng SaveData và quyết định xem liệu nó có phù hợp với nhu cầu của bạn hay không, đặc biệt là nếu nhiều người dùng chia sẻ thiết bị.
Dữ liệu được lưu trữ bằng SaveData được tách biệt khỏi Power Apps người chơi khác. Power Apps Dữ liệu được lưu trữ dựa trên ID ứng dụng của ứng dụng, tự động cô lập không gian tên SaveData ở giữa Power Apps.
Hệ điều hành và trình duyệt có trách nhiệm phân lập dữ liệu giữa Power Apps và các ứng dụng khác trên thiết bị cũng như với các trang web. Ví dụ, hệ điều hành có trách nhiệm cô lập dữ liệu được lưu trữ trong Microsoft Outlook khỏi dữ liệu được lưu trữ trong Power Apps và cũng cô lập dữ liệu đó khỏi các trang web như Bing.com hoặc PowerApps.com. Tiện ích hộp cát ứng dụng tích hợp của hệ điều hành được sử dụng để lưu trữ SaveData thường không thể truy cập hoặc ẩn khỏi người dùng.
Khi sử dụng cùng một ứng dụng, hệ điều hành và trình duyệt cũng có trách nhiệm phân lập dữ liệu giữa những người dùng có hệ điều hành khác nhau. Ví dụ, nếu hai người dùng khác nhau chia sẻ một máy tính và sử dụng hai thông tin đăng nhập Windows khác nhau, hệ điều hành sẽ chịu trách nhiệm cô lập dữ liệu giữa hai người dùng Windows.
Dữ liệu có thể được phân lập hoặc không giữa những người dùng khác nhau nếu người dùng hệ điều hành là cùng một người. Power Apps Không phải người chơi nào cũng xử lý vấn đề này theo cùng một cách. Power Apps Ví dụ, khi đăng nhập với tư cách là cùng một người dùng Windows, trong trình phát, người dùng sẽ đăng xuất khỏi và đăng nhập với tư cách là một người dùng khác. Power Apps Power Apps Power Apps Dữ liệu được lưu trữ trong ứng dụng trước khi người dùng thay đổi có thể được người dùng thứ hai truy cập trong cùng một ứng dụng. Power Apps Power Apps Dữ liệu cũng có thể bị xóa và người dùng đầu tiên có thể không còn có thể truy cập vào dữ liệu đó nữa. Power Apps 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( Bộ sưu tập, Tên )
LoadData( Bộ sưu tập, Tên [, Bỏ quaTệp không tồn tại ])
- Bộ sưu tập - Bắt buộc. Bộ sưu tập sẽ được lưu trữ hoặc tải.
- Tên - 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 - Tùy chọn. 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.
ClearData( [Tên] )
- Tên - Tùy chọn. 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ả |
---|---|---|
Lưu dữ liệu( Bộ nhớ đệm cục bộ, "Bộ nhớ đệm của tôi") | 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". |
Tải dữ liệu( Bộ nhớ đệm cục bộ, "Bộ nhớ đệm của tôi") | 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". |
Xóa dữ liệu( "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". |
Xóa dữ liệu() | 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.
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).
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 một công cụ điều khiển Button (Nút).
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).
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 } )
Thêm một công cụ điều khiển Button (Nút).
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).
Đặ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" )
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:
Thêm một công cụ điều khiển Button (Nút) thứ ba.
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).
Đặ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" )
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:
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):
Bộ điều khiển hình ảnh trong mẫu thư viện phải mặc định thuộc tính Image của nó là ThisItem.Picture và các bộ điều khiển nhãn phải mặc định thuộc tính Text của chúng là 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.
Đặ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:
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.
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. Không thể sử dụng SaveData và LoadData 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.
Sau khi ứng dụng đã được tải xuống, bạn có thể ngắt kết nối mạng và chạy ứng dụng ngoại tuyến.
Nhập tên và chụp ảnh của một mục.
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.
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.
Đó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ị.
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.
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ữ.
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.
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.