เริ่มต้นใช้งาน

ส่วนนี้ออกแบบมาเพื่อให้วิศวกรได้ทราบภาพรวมคร่าวๆ เพียง 5 นาทีว่า การเรียกข้ามโปรไฟล์สามารถทำงานร่วมกับ SDK และวิธีทดสอบ อย่าพยายามทำ สร้างสิ่งต่างๆ - ส่วนนี้ไม่ได้ออกแบบมาเพื่อใช้เป็นข้อมูลอ้างอิงหรือแนวทาง แต่เป็นเพียงบทเกริ่นนำ

ชั้นเรียนและวิธีการแบบรับรู้โปรไฟล์ที่กำหนดเอง

SDK ของแอปที่เชื่อมต่อช่วยให้คุณใส่คำอธิบายประกอบชั้นเรียนและวิธีการของคุณเองได้ดังนี้ ข้ามโปรไฟล์ การดำเนินการนี้จะสร้างคลาสและเมธอดที่ช่วยให้คุณดำเนินการ ที่ใช้คำอธิบายประกอบบนโปรไฟล์ใดก็ได้

ตัวอย่างเช่น ลองพิจารณาคลาสต่อไปนี้ที่เพิ่มคำอธิบายประกอบ SDK แล้ว

public class CalendarDatabase {

  @CrossProfile // SDK annotation
  public void deleteEvent(Event event, Account account) {
    // complex logic with database calls
  }
}

การดำเนินการนี้จะสร้างคลาสที่ขึ้นต้นด้วย Profile ซึ่งช่วยให้คุณเรียกใช้ API นี้ได้ใน โปรไฟล์ที่คุณเลือก เช่น java profileCalendarDatabase.work().deleteEvent(event, account);

ตัวอย่างที่ซับซ้อนมากขึ้น

ในความเป็นจริงแล้ว ชั้นเรียนและวิธีการของคุณจะซับซ้อนมากขึ้น ตัวอย่างเช่น API ที่มีอยู่สามารถใช้ประเภทการแสดงผล ListenableFuture ประเภท และคุณอาจต้องใช้ เพื่อรวมผลลัพธ์จากทั้ง 2 โปรไฟล์ ลองดูตัวอย่างนี้

public class CalendarDatabase {

  @CrossProfile // SDK annotation
  public ListenableFuture<Collection<Event>> getEvents() {
    // complex logic with database calls
  }
}
// Merge results from both profiles into a set
profileCalendarDatabase.both()
  .getEvents()
  .transform((Map<Profile, Collection<Event>> events) -> {
    return events.values()
        .stream()
        .flatMap(Collection::stream)
        .collect(Collectors.toSet());
  }, directExecutor());

คลาสและเมธอดที่สร้างขึ้นเหล่านี้จะทำงานตามที่คาดไว้พร้อมกับความปลอดภัยเต็มรูปแบบ การเติมโค้ด IDE

ประเภทการส่งกลับและพารามิเตอร์แต่ละประเภทของ API ที่มีคำอธิบายประกอบต้องได้รับการรองรับโดย SDK แต่รองรับการซ้อนและข้อมูลทั่วไปของรายการ ชุด อาร์เรย์ ค่าดั้งเดิม ประเภทที่แบ่งข้อมูลได้ และประเภทการทำให้อนุกรมได้ นอกเหนือจาก ListenableFuture, Optional และ Proto นอกจากนี้คุณยังสามารถเพิ่ม รองรับประเภทที่ SDK ไม่ได้รับการสนับสนุนตั้งแต่แรก ตัวอย่างเช่น จะสนับสนุน ListenableFuture<List<Map<CustomProto, CustomParcelableType[]>>> ได้อย่างราบรื่น

การทดสอบ

SDK ออกแบบมาเพื่อลดความซับซ้อนของการทดสอบ 1 หน่วย สำหรับคลาสโปรไฟล์ที่สร้างขึ้นแต่ละคลาส ก็จะมีชั้นเรียน FakeProfile ที่เกี่ยวข้องซึ่งคุณจะจัดหางานและ อินสแตนซ์ส่วนบุคคล เช่น

// Create an instance of the SDK-generated fake connector class. This
// class lets you control the availability of the profiles, which
// profile you are now running on.
private final FakeCrossProfileConnector connector =
  new FakeCrossProfileConnector();

// Create an instance of your real/fake/mock class for both profiles.
private final CalendarDatabase personalCalendarDatabase =
  new FakeCalendarDatabase();
private final CalendarDatabase workCalendarDatabase =
  new FakeCalendarDatabase();

// Create an instance of the SDK-generated fake profile-aware class.
private final FakeProfileCalendarDatabase profileCalendarDatabase =
  FakeProfileCalendarDatabase.builder()
    .personal(personalCalendarDatabase)
    .work(workCalendarDatabase)
    .connector(connector)
    .build();

// Pass profileCalendarDatabase into your classes under test, or set
// Dagger up to inject the fake automatically.