SDK C++ của Google Play Games

Tóm tắt

Tổ chức

Điểm truy cập chính cho chức năng Dịch vụ trò chơi của Play là lớp GameServices. Các thực thể GameServices được tạo bằng GameServices::Builder. Xem GameServices

Các phương thức truy cập hoặc làm thay đổi trạng thái của toàn bộ phiên GameServices nằm trong chính lớp GameServices.

Các chức năng khác được định hướng thông qua một nhóm trình quản lý theo từng tính năng. Những người quản lý này nhóm các chức năng liên quan lại với nhau; chúng không chứa trạng thái mà người dùng nhìn thấy. Trình quản lý được trả về bằng cách tham chiếu và có quyền kiểm soát toàn thời gian của thực thể GameServices chứa nội dung đó. Do đó, mã ứng dụng không bao giờ được giữ lại tham chiếu của trình quản lý, mà thay vào đó hãy giữ lại thực thể GameServices. Xem phần Người quản lý.

Dữ liệu được trả về thông qua các đối tượng kiểu giá trị không thể thay đổi. Các giá trị này phản ánh chế độ xem nhất quán của dữ liệu cơ bản tại thời điểm thực hiện truy vấn. Vui lòng xem phần Loại giá trị.

Mô hình luồng

Trừ phi có ghi chú khác, tất cả phương thức GameServices và phương thức Manager đều là theo luồng và không đồng bộ, trừ phi có ghi chú khác. Các lệnh này có thể được gọi trên bất kỳ luồng nào mà không cần khoá bên ngoài và sẽ thực thi theo thứ tự nhất quán với thứ tự gọi. Nói chung, các phương thức biến đổi (những phương thức thay đổi trạng thái) sử dụng mô hình cháy và quên. Các phương thức truy cập (những phương thức đọc trạng thái) có hai biến thể chính. Biến thể đầu tiên (có các tên như GetProperty) cung cấp không đồng bộ kết quả cho lệnh gọi lại được cung cấp; biến thể thứ hai (có tên như GetPropertyBlocking) trả về đồng bộ kết quả của chúng cho luồng lệnh gọi. Trình truy cập sẽ thấy kết quả của tất cả các biến đã được gọi trước đó; tuy nhiên, trình truy cập có thể đã hoặc chưa sửa đổi trạng thái Dịch vụ trò chơi từ xa tại một thời điểm nhất định.

Tất cả lệnh gọi lại người dùng (cho dù là lệnh gọi lại một lần được cung cấp dưới dạng đối số cho phương thức truy cập hay lệnh gọi lại nhiều công dụng được định cấu hình tại thời gian xây dựng GameServices) đều được gọi trên một luồng gọi lại chuyên dụng. Luồng này có thể khác với bất kỳ khái niệm nền tảng nào của "luồng chính" hoặc "luồng giao diện người dùng". Lệnh gọi lại của người dùng phải thực thi nhanh chóng, vì chuỗi lệnh gọi lại bị trì hoãn có thể gây ra các vấn đề mà người dùng có thể nhìn thấy (ví dụ: chậm hoàn tất yêu cầu đăng xuất).

Các thuộc tính trên loại giá trị không thể thay đổi có sẵn một cách đồng bộ và không có quy tắc chặn.