Apps foundation

ขับเคลื่อนแพลตฟอร์มแบบอินเทอร์แอกทีฟด้วย Remote Compose

ลำโพง

เกี่ยวกับ

เกี่ยวกับการเสวนา

Remote Compose นำเสนอวิธีใหม่ในการแสดง UI ที่สื่อความหมายและโต้ตอบได้บนแพลตฟอร์มระยะไกล เช่น วิดเจ็ต RemoteCompose จะแยก UI ออกจากการดำเนินการของโฮสต์เพื่อมอบข้อได้เปรียบที่สำคัญด้วยการจัดเรียงเลย์เอาต์เป็นเพย์โหลดไบนารีขนาดกะทัดรัด

ประโยชน์หลักๆ ได้แก่ การโต้ตอบที่ Edge ซึ่งช่วยให้แสดงผลได้อย่างมีประสิทธิภาพสูงผ่านการดำเนินการในเครื่องบนอุปกรณ์ระยะไกล การปรับขนาดที่ลื่นไหลซึ่งช่วยให้ UI ปรับเปลี่ยนตามอุปกรณ์ในรูปแบบต่างๆ ได้ผ่านการประเมินคอมโพเนนต์ฝั่งระยะไกล และเวิร์กโฟลว์ของนักพัฒนาแอปแบบรวมที่ช่วยให้ไม่ต้องใช้เฟรมเวิร์ก UI ระยะไกลเฉพาะแพลตฟอร์มผ่าน Jetpack Compose API ที่คุ้นเคย

เซสชันนี้จะอธิบายประโยชน์เหล่านี้และแสดงตัวอย่างการใช้งานจริง ซึ่งรวมถึงวิดเจ็ต Wear OS ที่ทันสมัยและประสบการณ์การใช้งานเครื่องมือติดตามการออกกำลังกาย Wear ที่ดูข้อมูลได้อย่างรวดเร็วใน Runkeeper

สรุป

  • Remote Compose จะจัดแพ็กเกจ UI เป็นเอกสารไบนารีขนาดกะทัดรัดแทนการส่งสำเนาแอปหรือหน้าจอข้ามขอบเขตกระบวนการ
  • นักพัฒนาแอปจะสร้างเอกสารโดยใช้ Compose API หรือ JSON Android Studio จะแสดงตัวอย่างแบบเรียลไทม์ขณะเขียน Composable
  • เอกสารที่โหลดจะทำงานด้วยตัวเองโดยตรงในโปรแกรมเล่น โดยจะจัดการเหตุการณ์ต่างๆ เช่น การปรับขนาดและการแตะโดยไม่ต้องส่งข้อมูลไปกลับกับผู้สร้าง
  • การเพิ่มประสิทธิภาพในตัว เช่น เทมเพลตคอมโพเนนต์และการบีบอัดเอกสารจะลดเพย์โหลดลงเหลือเพียงไม่กี่กิโลไบต์
  • Jetpack Glance จะส่งเอกสาร Remote Compose สำหรับวิดเจ็ต Launcher และวิดเจ็ต Wear OS ซึ่งจะแยก UI ออกจากการเรียกใช้แอปเพื่อประหยัดแบตเตอรี่

แหล่งข้อมูล

Gemini Notebook

หัวข้อ

  • remote-compose
  • jetpack-compose
  • android-widgets
  • wear-os
  • ui-framework

ข้อความถอดเสียง

ข้อมูลเบื้องต้นและภาพรวมของแพลตฟอร์มระยะไกล

  • สวัสดีทุกคน

  • ผมชื่อ Nicolas Roard เป็นหัวหน้าฝ่ายเทคนิคในโปรเจ็กต์ Remote Compose

  • ผมชื่อ John Hoford

  • ฉันเป็นนักพัฒนาซอฟต์แวร์ใน Remote Compose

  • และผม John Zoeller ทำงานด้านความสัมพันธ์กับนักพัฒนาแอปใน Wear OS

  • เรามาเริ่มกันเลย

  • ดังนั้นฉันจะอธิบายภาพรวมคร่าวๆ ก่อนว่าปัญหาที่เราพยายามแก้ไขด้วย Remote Compose คืออะไรกันแน่

  • โดยปกติแล้วเมื่อคุณพูดหรือคิดถึง UI บน Android คุณจะคิดถึง UI เป็นส่วนหนึ่งของแอปพลิเคชันและกระบวนการของแอปพลิเคชันใช่ไหม

  • มีหลายที่ที่คุณอาจต้องการนำ UI ไปใช้ จัดแพ็กเกจ และส่งไปยังที่อื่น เช่น พื้นผิวระยะไกล

  • ดังนั้นสิ่งที่เราหมายถึงแพลตฟอร์มระยะไกลก็คือตัวอย่างเหล่านั้น เช่น รูปแบบนาฬิกา วิดเจ็ต อาจเป็นแอปของคุณเองหรือแอปอื่นก็ได้

  • ดังนั้น ทั้งหมดนี้จึงเป็นตัวอย่างของแพลตฟอร์มระยะไกล

  • ดังนั้นที่ใดที่หนึ่งซึ่งอาจเป็นแอปหรือเซิร์ฟเวอร์จะทราบว่าต้องส่งอะไรไปยังแพลตฟอร์มระยะไกลนั้น

  • และ…

  • แล้วลำโพงของฉันล่ะ

  • ซึ่งทั้ง 2 อย่างนี้มีระยะห่างกันอยู่

  • และระยะทางนั้นอาจเป็นระยะทางจริงหรือการเชื่อมต่อเครือข่ายก็ได้

  • หรืออาจเป็นเพียงขอบเขตของกระบวนการก็ได้

  • คุณอาจใช้อุปกรณ์เครื่องเดียวกันอยู่

  • แต่ไม่ว่าจะเป็นอะไร ก็มีค่าใช้จ่ายทั้งนั้น

  • และวิธีที่ง่ายที่สุดที่คุณนึกออกในการนำ UI นั้นมาส่งก็คือการคัดลอกหน้าจอใช่ไหม แล้วก็ส่ง

  • ปัญหาคือมันไม่ได้เร็วมากใช่ไหม

  • ดังนั้นสิ่งที่เราทำกับ Remote Compose แทนคือเราส่งเอกสารที่แสดงถึง UI นั้น

  • และโปรดทราบว่าการเป็นธุรกิจขนาดเล็กมีข้อดีหลายประการ

  • ซึ่งเป็นสิ่งสำคัญ

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

  • คุณได้ตั๋วไปกลับแล้ว

  • คุณจึงได้รับข้อมูลบางอย่างบนพื้นผิวระยะไกลนั้น เช่น เหตุการณ์ การคลิก การแตะ

  • คุณต้องกลับไปหาผู้ที่สร้างไฟล์เพื่อขอเวอร์ชันใหม่

  • ซึ่งนั่นไม่ดีเลย

  • ดังนั้นในหลายๆ ด้าน นั่นคือสิ่งที่เราพยายามแก้ไขด้วย Remote Compose

สถาปัตยกรรมและโครงสร้างเอกสารของ Remote Compose

  • เราเห็นว่ามีการส่งเอกสารแล้ว

  • นอกจากเอกสารแล้ว ยังมีส่วนสำคัญอีก 2 ส่วน

  • วิธีแรกคือวิธีที่คุณสร้างเอกสารนั้น

  • และวิธีที่ 2 คือวิธีเล่น

  • ฉันบอกไปแล้วว่าเรากำลังสร้างเอกสาร

  • เราจะไม่ส่งสำเนาหน้าจอและจะไม่ส่งแอปพลิเคชัน

  • เราจึงมี 3 วิธีที่แตกต่างกันเพื่อช่วยคุณสร้างเอกสารดังกล่าว

  • 1 คือ Compose API, 2 คือ Kotlin API แบบกระบวนการ, KMP และ 3 คือรูปแบบ JSON

  • ทั้งหมดจะส่งไบต์เดียวกัน

  • เราจึงมีชุดเครื่องมือสำหรับสร้างเอกสารเหล่านั้น และเมื่อใช้ Compose API เราจะใช้ประโยชน์จากเครื่องมือที่มีอยู่ใน Android Studio ได้

  • ตัวอย่างเช่น คุณสามารถใช้ตัวอย่างเพื่อดูสิ่งที่กำลังพัฒนาแบบเรียลไทม์ได้โดยตรงใน IDE

  • แต่เรายังกำลังพัฒนาเครื่องมือใหม่ๆ ที่มีประสิทธิภาพ เช่น เครื่องมือตรวจสอบเอกสาร

  • มาดูเอกสารกันแบบเร็วๆ ดีกว่า

  • โดยพื้นฐานแล้วจะเป็นรายการการดำเนินการที่เข้ารหัสในการแสดงผลแบบไบนารีที่กะทัดรัด และการดำเนินการเหล่านั้นจะอธิบายอินเทอร์เฟซผู้ใช้แบบสแตนด์อโลนที่ส่งไปยังแพลตฟอร์มระยะไกลนั้นได้

  • ดังนั้น ลักษณะสำคัญอย่างหนึ่งของเอกสารเหล่านั้นคือมีขนาดเล็ก

  • และอย่างที่เราเห็น ยิ่งเล็กยิ่งดี

  • โดยปกติแล้วเราจะพูดถึงข้อมูลขนาดไม่กี่กิโลไบต์ใช่ไหม

  • แต่แม้ว่า UI จะซับซ้อนกว่านี้และมีเลย์เอาต์ที่ปรับเปลี่ยนได้มาก เราก็ยังคงพูดถึงขนาดไม่กี่สิบกิโลไบต์ใช่ไหม

  • และเราจะรวมชิ้นงานทั้งหมดไว้ในเอกสารนั้น

  • ดังนั้นหากคุณลองคิดดู สิ่งเดียวที่ใช้พื้นที่ในเอกสารได้จริงๆ คือเมื่อคุณเริ่มจัดแพ็กเกจบิตแมป

  • โปรดคำนึงถึงเรื่องนี้ด้วย

  • ซึ่งเป็นเหตุผลทั้งหมดที่เราส่งเอกสาร ไม่ใช่สำเนาหน้าจอ

  • เมื่อเราพูดถึงการเป็นธุรกิจขนาดเล็กและความสำคัญของธุรกิจขนาดเล็ก เราไม่ได้พูดถึงแค่การสื่อสารเท่านั้น

  • ซึ่งเป็นกรณีที่เกิดขึ้นไม่บ่อยนักแต่เป็นหัวใจสำคัญของปรัชญาเบื้องหลัง Remote Compose

  • อย่างที่เราเห็นกันว่าการดำเนินการนี้ส่งผลต่อเวลาที่ใช้ในการแสดงพิกเซลแรกบนหน้าจออย่างเห็นได้ชัด แต่ขออภัยด้วย

  • นอกจากนี้ยังหมายความว่าเราสามารถใช้เอกสารได้มากกว่าปกติในความสามารถที่เท่ากันของแพลตฟอร์ม โดยที่ยังคงมีประสิทธิภาพอยู่

  • และนั่นคือสิ่งที่เราจะเห็นว่าเราใช้ประโยชน์จากสิ่งนี้เมื่อเรารองรับวิดเจ็ต

  • ตัวเพลเยอร์เองก็มักจะมีขนาดเล็กมากและมีการพึ่งพาอาศัยกันน้อยมาก

  • และข้อเท็จจริงที่ว่าเอกสารเหล่านี้มีขนาดเล็กและมีทรัพยากร Dependency เพียงไม่กี่รายการหมายความว่าเราสามารถขยายการเข้าถึงไปยังตำแหน่งที่เราสามารถเล่นเอกสาร Remote Compose ได้จริง

  • และนั่นสำคัญอย่างยิ่งสำหรับแพลตฟอร์มที่มีข้อจำกัด ดังที่คุณจะได้เห็น

  • ผมพูดถึงการรับส่งข้อมูลและระยะทางไปเยอะมาก แต่ Remote Compose เองไม่ได้จัดการกับการรับส่งข้อมูลจริงๆ

  • คุณต้องรับผิดชอบเอง

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

  • สำหรับวิดเจ็ต เราจะช่วยคุณโดยจัดเตรียมเครื่องมือเชื่อมต่อให้

  • แต่โดยทั่วไปแล้ว สิ่งที่ควรคำนึงถึงคือคุณเป็นผู้รับผิดชอบการขนส่ง

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

  • ดังนั้น สิ่งหนึ่งที่ควรคำนึงถึงคือการมอบอำนาจให้คุณตัดสินใจว่าจะโอนเอกสารอย่างไร หมายความว่าคุณสามารถนำ Remote Compose กลับมาใช้เป็นเครื่องมือในสถานการณ์ต่างๆ ได้มากมาย ซึ่งบางสถานการณ์เราอาจไม่ได้นึกถึงด้วยซ้ำ จริงไหม

  • เมื่อเพลเยอร์โหลดเอกสารแล้ว เอกสารจะทำงานด้วยตัวเอง

  • และนั่นคือแนวคิดทั้งหมด

  • เราต้องการให้เอกสารสร้าง UI ที่ค่อนข้างเป็นอิสระ ซึ่งไม่จำเป็นต้องกลับไปหาผู้สร้างใช่ไหม

  • และทั้งหมดนี้รวมกัน เราสามารถรองรับการปรับขนาด การเลื่อน การโต้ตอบแบบสัมผัส การตัดสินใจแสดงหรือซ่อนคอมโพเนนต์ ภาพเคลื่อนไหว การโต้ตอบแบบสัมผัสบางอย่าง และการจัดการการสัมผัสบางอย่าง ทั้งหมดนี้ทำได้ในเอกสารโดยไม่ต้องกลับไปที่โปรแกรมเล่น

  • และบางครั้ง หากคุณต้องการกลับไปที่การสร้าง คุณสามารถขอให้ดำเนินการโดยพูดว่า "โปรดสร้างเอกสารใหม่ให้ฉัน"

  • เรามีเพลเยอร์อย่างเป็นทางการ 3 รายการซึ่งส่วนใหญ่ให้บริการผ่านไลบรารี AndroidX ใน Remote Compose

  • เครื่องเล่นแรกคือเครื่องเล่น Compose ซึ่งคุณสามารถใช้ในแอปพลิเคชัน Compose ได้

  • นอกจากนี้ เรายังมีเพลเยอร์ View หากคุณยังคงใช้ View อยู่

  • นอกจากนี้ เรายังมีการติดตั้งใช้งาน RemoteViews ที่จัดส่งในแพลตฟอร์ม Android ตั้งแต่ API 36 ซึ่งช่วยให้คุณสร้างวิดเจ็ต Android ที่ทำงานใน Launcher โดยใช้ Remote Compose ได้

  • นอกจากนี้ เรายังมีเพลเยอร์เวอร์ชันทดลองบางรายการหากคุณสนใจ เช่น C++ ที่ทำงานบน Skia, TypeScript และแม้แต่ Compose Multiplatform

  • ดังนั้น แนวคิดก็คือเทคโนโลยีเดียวกับที่คุณใช้อยู่นั้นสามารถใช้เพื่อแสดงผลบนแพลตฟอร์มและแพลตฟอร์มต่างๆ ได้มากมาย

  • สรุปก็คือ ระยะทางที่ฉันพูดถึงยังคงมีอยู่ แต่เราพยายามทำให้ระยะทางมีความสำคัญเฉพาะเมื่อจำเป็นจริงๆ เท่านั้น

  • ใช่

ความสามารถในการแสดงผล คอมโพเนนต์ และการโต้ตอบ

  • เรามาพูดถึงความสามารถที่คุณจะได้รับในเอกสาร Remote Compose กันสักเล็กน้อย

  • ดังนั้นที่ฐานของมันจะมี Canvas และมีฟีเจอร์ทั้งหมดของ Android Canvas

  • แต่มี API เพิ่มเติมอีก 2-3 รายการ

  • แต่สิ่งพิเศษอย่างหนึ่งคือ Float ทั้งหมดที่คุณมีใน Android Canvas สามารถแทนที่ด้วยนิพจน์ได้

  • ซึ่งช่วยให้คุณสร้างภาพเคลื่อนไหวได้ตามที่เห็นที่นี่ รวมถึงการปรับขนาดแบบไดนามิกและเลย์เอาต์ที่ยืดหยุ่น

  • คุณทำสิ่งต่างๆ ได้มากมายด้วยฟีเจอร์นี้

  • ข้อมูลเพิ่มเติมเล็กน้อยเกี่ยวกับนิพจน์

  • คุณมีชุดโอเปอเรเตอร์ที่หลากหลายตั้งแต่คณิตศาสตร์ทั่วไป ตรีโกณมิติ การเข้าถึงอาร์เรย์ การประมาณค่าในช่วงแบบสไปลน์

  • และสิ่งหนึ่งที่น่าสนใจคือค่าที่เปลี่ยนแปลงสามารถทำให้เคลื่อนไหวได้ คุณจึงทำให้การเปลี่ยนแปลงสถานะของค่าใดๆ เคลื่อนไหวได้

  • ในภาพวาดที่คุณเห็นอยู่นี้ ลูกตุ้มแต่ละลูกจะเลือกภาพเคลื่อนไหวประเภทต่างๆ และทั้งหมดนี้มีให้ใช้งานใน Remote Compose

  • นอกจากนี้ เรายังมีคอมโพเนนต์พื้นฐาน สิ่งต่างๆ ของ Compose และสิ่งที่คุณทราบอยู่แล้ว

  • ซึ่งจะสร้าง API, กล่อง, แถว, คอลัมน์ และอื่นๆ ที่คุ้นเคยเป็นอย่างดี

  • แต่ยิ่งไปกว่านั้น เรายังมีคอมโพเนนต์แบบปรับเปลี่ยนได้ด้วย

  • ข้อดีอย่างหนึ่งคือ เนื่องจากคุณไม่ได้ควบคุมเอกสาร ณ จุดนั้น เอกสารเหล่านี้จึงจัดการกับออบเจ็กต์ที่หายไป ปรากฏขึ้น และหายไป กลับมาอีกครั้งเนื่องจากการปรับขนาด ฯลฯ ได้ทั้งหมดโดยไม่ต้องกลับไปที่แหล่งที่มาของเอกสาร

  • นอกจากนี้ เรายังมีภาพเคลื่อนไหวของคอมโพเนนต์ด้วย

  • การเปลี่ยนแปลงทั้งหมดสามารถทำให้เคลื่อนไหวได้ ดังนั้นหากมีบางอย่างหายไป คุณก็ทำให้เคลื่อนไหวได้

  • และคุณยังเขียนภาพเคลื่อนไหวที่กำหนดเองได้ด้วย

  • ในกรณีนี้ คุณจะเห็นว่าบางคนใช้เฉดเดอร์และสิ่งต่างๆ มากมาย

  • อีกสิ่งหนึ่งที่เราทำได้คือการโต้ตอบขณะอยู่ในนั้น ดังนั้นจึงไม่ใช่แค่รูปภาพสวยๆ เท่านั้น

  • คุณสามารถคลิกสิ่งต่างๆ มีการโต้ตอบแบบสัมผัส การเลื่อน และอื่นๆ

  • นอกจากนี้ การช่วยเหลือพิเศษก็สำคัญเช่นกัน ดังนั้น Accessibility API ทั้งหมดจึงอยู่ที่นี่

  • สิ่งหนึ่งที่คุณเห็นที่นี่คือฉันกำลังสร้างนาฬิกาจับเวลาแบบเต็มรูปแบบที่มี UI ที่น่าสนใจ และทั้งหมดนี้เกิดขึ้นในฝั่งผู้เล่น

  • ทั้งหมดนี้อยู่ในเอกสาร

  • ทุกอย่างที่คุณเห็นจะไม่กลับไปที่เซิร์ฟเวอร์อีก

  • ทีนี้ หากคุณสร้างไว้ภายในแอปพลิเคชัน ในกรณีนี้ ส่วนสีน้ำเงินคือแอปพลิเคชัน และส่วนสีดำคือเอกสาร Remote Compose

  • คุณสามารถโต้ตอบระหว่างทั้ง 2 อย่างได้

  • ในที่นี้ ฉันกำลังเพิ่มค่า และคุณจะเห็นว่าแอปพลิเคชันได้รับค่าเหล่านั้น ซึ่งเราเรียกว่าโฮสต์ และฉันยังเลื่อนแถบเลื่อนได้ด้วย ซึ่งจะเปลี่ยนค่าภายในเอกสาร

  • ดังนั้นฉันจึงสามารถทำได้ทั้ง 2 วิธี

การสร้าง UI ด้วย Compose API และนิพจน์

  • เรามาดูวิธีสร้างเอกสารเหล่านี้กันเลย

  • API มีอยู่ 3 รายการ ได้แก่ Compose, Kotlin และ JSON

  • คุณคงพอจะทราบว่า Compose API เป็นอย่างไร

  • ซึ่งมีรายละเอียดปลีกย่อยบางอย่างที่เราจะอธิบายอย่างละเอียด

  • Kotlin API เป็นแบบกระบวนการ (Procedural)

  • คุณจัดเรียงคำสั่งหนึ่งในเอกสาร ดังนั้นจึงเป็นการจัดเรียงแบบหนึ่งต่อหนึ่ง

  • JSON เป็นไวยากรณ์ JSON ที่คุณสามารถใช้ได้ เรามีตัวแปลงที่จะแปลงเป็น Remote Compose

  • นอกจากนี้ยังเป็นประโยชน์หากคุณทำงานกับ LLM เนื่องจาก LLM สามารถอ่านและเขียนเอกสารได้

  • มาลองใช้ Compose และสร้างบางอย่างกันเลย

  • ในกรณีนี้ คุณจะเห็นว่าคุณเป็น Composable และ Remote Composable

  • เรามีแคนวา-- ไม่ใช่แคนวาส แต่เป็นแคนวาสระยะไกลและตัวปรับแต่งระยะไกล แต่ตัวปรับแต่งเองก็เหมือนกัน สิ่งที่คุณรู้จักและชื่นชอบ

  • ตอนนี้คำสั่งทั้งหมดภายในนั้นจะสร้างคำสั่งเอกสาร Remote Compose ของคำสั่งระยะไกลเมื่อดำเนินการ

  • ในกรณีนี้คือการวาดวงกลม แล้วเพิ่มตัวเลขทศนิยมและนิพจน์โดยใช้เวลาในนิพจน์เหล่านั้น

  • และเมื่อฉันเปิดใช้ในภาพเคลื่อนไหว โปรดสังเกตว่านี่คือตัวอย่างแบบเรียลไทม์จาก Android Studio และจะทำงานแบบเรียลไทม์ให้คุณจริงๆ

  • คุณจะเห็นการแสดงออกเหล่านั้น

  • มาเจาะลึกกันสักหน่อยว่าฟีเจอร์นี้คืออะไรและทำงานอย่างไร

  • ทางด้านซ้าย คุณจะเห็นว่ามีสิ่งที่ดูเหมือนสเปรดชีตอยู่

  • ซึ่งเป็นตารางค่าในรูปแบบ Float

  • และยังมีแผนผังความสัมพันธ์ที่ช่วยให้คุณทราบว่าสิ่งหนึ่งเชื่อมโยงกับอีกสิ่งหนึ่งอย่างไร

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

  • และเมื่อทำงาน ระบบจะล้างทรัพยากร Dependency ทั้งหมดและประเมินเฉพาะทรัพยากรที่มีการเปลี่ยนแปลง

  • ดังนั้นจึงมีประสิทธิภาพมาก และในกรณีที่สมมติว่าวัตถุมีการเปลี่ยนแปลงขนาด การขึ้นต่อกันนั้นก็จะเปลี่ยนไป และต้องแสดงผลการเปลี่ยนแปลงนั้น

  • ซึ่งทำให้การประมวลผลมีประสิทธิภาพมาก เพราะคุณไม่ได้ คุณกำลังทำจากบนลงล่าง และคุณกำลังทำอย่างมีประสิทธิภาพมาก

  • เรามาขยายความเกี่ยวกับนาฬิกาเรือนนั้นกันสักหน่อย เพื่อแสดงให้เห็นว่าเราสามารถสร้างสิ่งต่างๆ ที่ใช้งานได้จริงหรือเกือบจะใช้งานได้จริง

  • ในกรณีนี้ สิ่งที่เรากำลังทำคือเราจะเพิ่มเครื่องหมายขีดบนขอบ และคุณจะเห็นลูป for บางส่วน ดังนั้นคุณจึงสามารถจัดเรียงลูป for ในเครื่องและทางขวาได้

  • จากนั้นเราจะเพิ่มเข็มชั่วโมงและเข็มนาที แล้วก็เพิ่มเข็มวินาที จากนั้นก็ปิดท้ายด้วยปุ่มต่างๆ เพื่อให้เสร็จสมบูรณ์ และเราก็จะได้นาฬิกาที่ใช้งานได้จริง

  • คุณรู้ไหมว่าจริงๆ แล้วมันแสดงเวลาอยู่

  • สิ่งที่น่าสนใจอีกอย่างคือคุณสามารถเขียนสิ่งเดียวกันนั้นใน JSON และหากอยู่ใน JSON คุณจะโต้ตอบกับ LLM ได้ง่ายๆ โดยพูดว่า "เปลี่ยนเข็มนาทีเป็นสีเขียว" แล้ว LLM ก็จะเข้าใจสิ่งที่คุณต้องการ

  • ซึ่งเป็นเรื่องที่ดีมาก

  • ตกลง

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์และการเพิ่มประสิทธิภาพเอกสาร

  • ขวา

  • หวังว่าข้อมูลนี้จะช่วยให้คุณเข้าใจความสามารถของ Remote Compose

  • เราขอพูดถึงการสนับสนุนนักพัฒนาแอปที่เรามีให้คุณสักเล็กน้อย

  • ผมพูดถึงไลบรารี AndroidX เป็นหลัก ดังนั้นคุณจะรู้ว่าจะหาทุกอย่างที่อยู่ใน DAC ได้จากที่ไหน

  • คุณจะได้รับเวอร์ชันล่าสุด เอกสารประกอบ และอื่นๆ ทั้งหมด

  • เราได้เห็น John สาธิตสิ่งที่เราทำได้ใน Android Studio เช่นเคย

  • เพราะฉันคิดว่าสิ่งที่เจ๋งที่สุดสำหรับฉันคือตัวอย่างแบบเรียลไทม์ที่ช่วยเร่งเวลาในการพัฒนาได้จริงๆ

  • สิ่งหนึ่งที่เรากำลังดำเนินการอยู่คือข้อกำหนดแบบเปิดสาธารณะที่แท้จริงสำหรับรูปแบบนี้

  • เราไม่ได้พยายามซ่อนข้อมูลอย่างสมบูรณ์ แต่ข้อมูลนั้นมีอยู่แล้ว

  • คุณจะเห็นวิธีการทำงาน วิธีสร้าง และวิธีเข้ารหัสจริงๆ

  • สิ่งหนึ่งที่พบได้ทั่วไปในการใช้แอปพลิเคชันคือ Vector Drawable แบบเคลื่อนไหว ซึ่งสะดวกมากอย่างเห็นได้ชัด

  • และอย่าลืมสิ่งที่ฉันพูดถึงเกี่ยวกับบิตแมป

  • เราสนใจมากที่คุณส่งเวกเตอร์ ไม่ใช่บิตแมป ใช่ไหม

  • เราจึงกำลังสร้างเครื่องมือ 2-3 อย่างเพื่อช่วยให้คุณนำ Lottie หรืออาจเป็นรูปแบบอื่นๆ มาแปลงเป็นคอมโพเนนต์ RemoteCompose ที่ใช้ในไฟล์ RemoteCompose ได้

  • ฉันได้กล่าวไปก่อนหน้านี้ว่าเรากำลังพัฒนาเครื่องมือเพิ่มเติมด้วย โดยเฉพาะเครื่องมือตรวจสอบเอกสารแบบเรียลไทม์ เพราะการมีประสบการณ์ของนักพัฒนาซอฟต์แวร์ในการสร้างก็เป็นเรื่องหนึ่ง แต่การตรวจสอบผลลัพธ์ของการสร้างนั้นก็เป็นอีกเรื่องหนึ่ง

  • ซึ่งในกรณีของเราคือเอกสาร

  • เราจึงอยากให้คุณได้เห็นตัวอย่างคร่าวๆ ของเครื่องมือที่เรากำลังพัฒนาอยู่

  • ซึ่งเป็นเครื่องมือตรวจสอบเอกสาร RemoteCompose ที่ช่วยให้คุณตรวจสอบเอกสารได้ตามชื่อ และใช้เครื่องมือและการแสดงภาพที่เป็นประโยชน์หลายอย่างกับเอกสารได้

  • ตัวอย่างที่ดีอย่างหนึ่งคือ คุณสามารถเปิดเอกสารและดำเนินการต่างๆ ที่อยู่ในเอกสารทีละขั้นตอนเพื่อพยายามทำความเข้าใจให้ดียิ่งขึ้นว่าทุกอย่างเชื่อมโยงกันอย่างไร

  • แต่เรามีเครื่องมือเพิ่มเติม

  • เช่น ฉันชอบอันนี้มาก ซึ่งจะแสดงภาพเอกสารของคุณในความหนาแน่นและขนาดต่างๆ ทันที คุณจึงดูได้อย่างรวดเร็วว่าสิ่งที่กำลังสร้างจะปรับให้เข้ากับการเปลี่ยนแปลงขนาดต่างๆ ได้ดีหรือไม่ เป็นต้น

  • สิ่งล่าสุดอย่างหนึ่งที่เรากำลังดำเนินการอยู่คือเครื่องมือตรวจสอบเลย์เอาต์แบบเต็มรูปแบบ ซึ่งเป็นความสามารถในการตรวจสอบเลย์เอาต์ประเภทที่คุณคุ้นเคยใน Android Studio แต่ในที่นี้จะนำไปใช้กับการดำเนินการและเอกสารต่างๆ

  • และเรายังสามารถก้าวไปได้ไกลกว่านั้นในแง่ของ 3 มิติ

  • อย่างที่ฉันได้กล่าวไปก่อนหน้านี้ และหวังว่าตอนนี้ฉันจะโน้มน้าวคุณได้แล้วว่าโมเดลขนาดเล็กก็มีข้อดี

  • ซึ่งเป็นสิ่งสำคัญ

  • เราต้องการเอกสารขนาดเล็ก

  • ซึ่งจะเป็นประโยชน์ต่อทุกคน

  • โปรดดำเนินการ

  • แล้วเราจะทำอะไรได้บ้าง

  • ลองดูตัวอย่าง UI ที่พบบ่อยกัน

  • ซึ่งเป็นข้อมูลที่มีหลายแถว

  • แถวต่างๆ จะมีชื่อ กราฟขนาดเล็ก และอาจมีปุ่มด้วย

  • ก็ปกติทั่วไป

  • ขนาดของ UI นั้นเล็กมากอยู่แล้ว

  • เรากำลังพูดถึงขนาดประมาณ 25 KB แต่เรามีฟังก์ชันการทำงานต่างๆ ใน RemoteCompose ที่จะช่วยให้คุณทำให้ขนาดเล็กลงได้อีก

  • มาดูรายละเอียดกันเลย

  • สิ่งแรกที่เราทำและเป็นบริการฟรีคือเราจะดำเนินการให้คุณ หากคุณส่งสตริงเดียวกัน เราจะสังเกตเห็น

  • เราสามารถลดขนาดได้ 2-3 ไบต์โดยชี้ไปยังสตริงเดียวกัน

  • แต่เรามีสิ่งอื่นๆ ให้ด้วย เช่น ลูป

  • ในที่นี้ ฉันใช้การดำเนินการวนซ้ำนี้เพื่อวาดกราฟเล็กๆ ใช่ไหม

  • ซึ่งจะช่วยประหยัดพื้นที่ได้อีก 2-3 ไบต์

  • นอกจากนี้ เรายังมีฟังก์ชันด้วย

  • คุณจึงสร้างฟังก์ชันได้ และในที่นี้ฉันจะสร้างฟังก์ชันสำหรับกราฟนั้นอีกครั้ง จากนั้นฉันจะเรียกใช้กราฟนั้นหลายครั้งได้ง่ายๆ

  • ซึ่งจะช่วยประหยัดไบต์ได้อีก

  • และสำหรับคอมโพเนนต์ เรามีเทมเพลตใช่ไหม

  • แนวคิดคล้ายกับฟังก์ชัน แต่เน้นที่คอมโพเนนต์มากกว่าใช่ไหม

  • ดังนั้น ฉันจึงสามารถแทนที่คอมโพเนนต์ต่างๆ ทั้งหมด แถวต่างๆ ทั้งหมดเหล่านั้นได้โดยเพียงแค่เรียกใช้เทมเพลตนั้นด้วยพารามิเตอร์ที่ถูกต้อง ซึ่งช่วยประหยัดพื้นที่ในเอกสารได้มาก

  • และสิ่งสุดท้ายที่เรารองรับตั้งแต่เริ่มต้นคือการบีบอัดเอกสาร

  • โดยทั่วไปแล้ว คุณจะประหยัดขนาดของเอกสารได้ประมาณครึ่งหนึ่งด้วยวิธีนี้

  • สิ่งที่น่าสนใจอย่างหนึ่งคือส่วนหัวของเอกสารมีความพิเศษเล็กน้อย

  • เราจะไม่บีบอัดไฟล์

  • ซึ่งมีประโยชน์มากหากคุณต้องการคัดกรองเอกสารจำนวนมากอย่างรวดเร็วโดยไม่ต้องคลายการบีบอัด

  • สรุปก็คือ เอกสารมีขนาดเล็กอยู่แล้วโดยค่าเริ่มต้น แต่คุณสามารถทำให้มีขนาดเล็กลงได้อีกมาก

  • และคุณจะเห็นได้จากตัวอย่างเล็กๆ นี้ว่าการลดขนาดลงเป็นลำดับความสำคัญนั้นง่ายเพียงใด เนื่องจากขนาดที่เล็กเป็นฟีเจอร์หนึ่ง

Remote Compose ในวิดเจ็ตและ Wear OS

  • ฉันได้พูดถึงวิดเจ็ตและวิดเจ็ต Launcher โดยเฉพาะในแพลตฟอร์ม Android

  • มาพูดถึงสิ่งที่เรากำลังทำและสิ่งที่มีอยู่แล้วกันสักเล็กน้อย

  • สิ่งแรกที่เราทำได้คือจำลองวิดเจ็ตที่มีอยู่ เช่น นาฬิกา ใน RemoteCompose เท่านั้น และโดยพื้นฐานแล้ววิดเจ็ตจะทำงานเหมือนเดิม เพียงแต่อยู่ใน RemoteCompose

  • แต่เราทำได้มากกว่านั้นใช่ไหม

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

  • เนื่องจากเรามีองค์ประกอบพื้นฐานที่เหมาะสมในการดำเนินการนี้ ซึ่งแตกต่างจากสิ่งที่คุณทำได้ด้วย RemoteViews

  • เรามอบความยืดหยุ่นและประสิทธิภาพให้คุณมากขึ้น

  • และเมื่อพูดถึงประสิทธิภาพ นี่คือตัวอย่างคร่าวๆ ของสิ่งเจ๋งๆ ที่คุณทำได้

  • ซึ่งจะแสดงเกมแบบเต็มในวิดเจ็ต

  • และเราจะชี้ให้เห็นขนาดจริงของวิดเจ็ตนั้น

  • เรากำลังพูดถึง 4 KB

  • ฉันได้พูดถึงไปแล้วว่าการรับส่งข้อมูลไม่ใช่สิ่งที่เราจัดการโดยตรงใน Remote Compose

  • แม้ว่าสำหรับวิดเจ็ตโดยเฉพาะ เรามีคลาสเครื่องมือเชื่อมต่อ RemoteCompose Widget ที่ช่วยให้คุณนำเอกสารและส่งไปยัง Launcher ได้อย่างง่ายดาย

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

  • และตอนนี้เราจะมาพูดถึง Wear OS กัน

  • ขอบคุณ Nico

  • เป็นไงบ้างทุกคน

  • ผมชื่อ John Zoeller

  • เราจะมาพูดคุยเกี่ยวกับ Wear OS กัน

  • ผมเขียนมุกตลกไว้ประมาณ 30 มุกสำหรับการนำเสนอนี้ แต่พอเล่าให้แม่ฟัง แม่บอกว่าผมจะโดนไล่ออกถ้าเล่ามุกพวกนี้

  • ดังนั้นเราจะข้ามส่วนนั้นไปและทำการนำเสนอแทน

  • เรามาพูดถึง Remote Compose และข้อดีที่ยอดเยี่ยมของฟีเจอร์นี้ใน Wear OS กัน

  • ก่อนอื่น เราจะพูดถึงเครื่องมือติดตามการออกกำลังกายใหม่ของ Wear OS

  • เราใช้ Remote Compose ในการสร้างแอปนี้ และเราทราบดีว่าการสร้างเครื่องมือติดตามการออกกำลังกายที่มีฟีเจอร์ครบครันและมีคุณภาพสูงนั้นเป็นเรื่องยากมากสำหรับ Wear

  • ซึ่งอาจใช้เวลาสักครู่

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

  • และด้วย Remote Compose เราจึงสามารถแยก UI ออกจากการดำเนินการทั้งหมดได้ จึงทำงานได้อย่างมีประสิทธิภาพมากและช่วยไม่ให้แบตเตอรี่ของผู้ใช้หมดเร็ว

  • หากไม่มี Remote Compose และเราทำสิ่งนี้ด้วย Compose ปกติ เราจะไม่สามารถรีเฟรชตัวชี้วัดแบบเรียลไทม์บนหน้าจอแบบวินาทีต่อวินาทีได้

  • แต่จริงๆ แล้วอาจใช้เวลาถึง 1 นาที เพราะคุณต้องปลุกนาฬิกาในโหมดแอมเบียนท์เพื่อแสดงเมตริก

  • ซึ่งถือเป็นข้อได้เปรียบอย่างมาก

  • และจริงๆ แล้วนี่คือ GIF เชื่อหรือไม่

  • นี่ไม่ใช่รูปภาพ

  • ฉันรู้ว่ามันยังไม่ขยับ และจะขยับในอีกประมาณ 45 วินาทีเมื่อเราไปถึงการอัปเดตเมตริกถัดไป

  • แต่นั่นคือข้อดีของ Remote Compose

  • และรู้ไหมว่าเกิดอะไรขึ้น

  • Wear Workout Tracker พร้อมให้บริการแล้ว

  • แอป ASICS Runkeeper สร้างแอปพลิเคชันใหม่ด้วยฟีเจอร์นี้ และคุณสามารถลองใช้ได้แล้ววันนี้โดยไปที่ลิงก์นี้และเข้าร่วมการทดสอบเบต้าแบบเปิด

  • ถัดไปคือวิดเจ็ต Wear OS

  • นี่เป็นอีกตัวอย่างหนึ่งที่ยอดเยี่ยมของการใช้งาน Remote Compose

  • ซึ่งจะมาแทนที่ไลบรารี ProtoLayout Tiles เดิม คุณจึงไม่ต้องรองรับเฟรมเวิร์ก UI 2 ประเภทที่แตกต่างกันสำหรับอุปกรณ์ต่างๆ อีกต่อไป

  • คุณทำทั้งหมดนี้ได้ด้วยฟีเจอร์เขียนข้อความระยะไกล

  • และเนื่องจากเป็นส่วนหนึ่งของ Jetpack Glance วิดเจ็ตใน Wear OS จึงเป็นส่วนหนึ่งของระบบนิเวศของ Android แบบรวม

  • และในฐานะส่วนหนึ่งของระบบนิเวศนี้ UI ของวิดเจ็ต RemoteCompose จะแยกออกจากกระบวนการของแอปที่เฉพาะเจาะจงโดยสิ้นเชิง จึงสามารถจัดเรียงและแสดงผลบนอุปกรณ์ Wear OS ได้อย่างปลอดภัยโดยใช้เทคโนโลยีเดียวกับสแต็ก Android ที่เหลือ

  • นอกจากนี้ Remote Compose ยังนำกราฟิกที่ทันสมัยและเลย์เอาต์ที่ปรับเปลี่ยนตามอุปกรณ์มาสู่วิดเจ็ต โดยทั้งหมดนี้ทำได้อย่างมีประสิทธิภาพและประหยัดแบตเตอรี่

  • และใน Wear OS 7 ผู้ผลิตฮาร์ดแวร์ได้เริ่มใช้ถาดที่เลื่อนในแนวตั้งแล้ว

  • นี่คือ Samsung Galaxy Watch และคุณจะเห็นว่าวิดเจ็ตเลื่อนในแนวตั้งผ่านถาดที่นี่

  • หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการย้ายข้อมูลการ์ดไปยังวิดเจ็ต โปรดไปที่ลิงก์นี้

  • ในอุปกรณ์รุ่นเก่าที่ใช้ภาพสไลด์แนวนอนสำหรับไทล์ วิดเจ็ตจะแสดงเป็นไทล์แบบเต็มหน้าจอโดยอัตโนมัติ

  • นอกจากนี้ ยังเข้ากันได้แบบย้อนหลังกับ Wear OS 4 อย่างสมบูรณ์ด้วย

  • นอกจากนี้ ลิงก์นี้จะให้ข้อมูลเพิ่มเติมเกี่ยวกับความเข้ากันได้แบบย้อนหลัง

  • นอกจากนี้ เรายังมีพาร์ทเนอร์อีก 2-3 รายที่นำวิดเจ็ตไปใช้แล้ว

  • คุณลองดูได้เลย

  • และนี่คือทั้งหมดที่เราจะพูดถึงในวันนี้

  • ใช่ ขอส่งต่อกลับไปให้คุณ Nico

  • ขอขอบคุณ

ขั้นตอนถัดไปและสรุป

  • โอเค

  • เราได้พูดถึงเรื่องนี้กันไปแล้ว

  • เราได้ตรวจสอบความสามารถบางอย่างของ Remote Compose แล้ว

  • ยังมีอีก 2-3 อย่างที่เราไม่ได้พูดถึง

  • ซึ่งเป็นเฟรมเวิร์กที่สมบูรณ์มาก

  • เราขอแนะนำให้คุณดูเอกสารประกอบที่มีอยู่และเอกสารประกอบที่กำลังจะเผยแพร่

  • เป้าหมายของเราคือการสร้างอนาคตที่คุณสามารถใช้ Remote Compose เพื่อจัดการกับแพลตฟอร์มระยะไกลต่างๆ เหล่านั้นได้จริงๆ

  • และคุณได้เห็นบางส่วนแล้วใช่ไหม เช่น Wear, วิดเจ็ต

  • แต่ยังมีอีกหลายอย่างที่กำลังจะตามมา

  • และเรายังมองว่านี่เป็นโปรเจ็กต์ที่ต้องทำอย่างต่อเนื่อง

  • และอยู่ระหว่างการพัฒนา

  • เราพัฒนาทั้งหมดนั้นอย่างเปิดเผย

  • คุณจะเห็นสิ่งที่เรากำลังทำอยู่

  • แต่เราอยากฟังความคิดเห็นจากนักพัฒนาแอปจริงๆ

  • เรากำลังสร้างสิ่งนั้นให้คุณ

  • ดังนั้น หากคุณมีไอเดียเพิ่มเติมหรือมีสิ่งที่ขาดหายไป โปรดพูดคุยกับเรา

  • เรายินดีเป็นอย่างยิ่งที่ได้ทราบเรื่องนี้

  • ฉันจะปิดท้ายด้วยสิ่งนี้ งานนำเสนอทั้งหมดที่คุณเพิ่งเห็นนั้นสร้างขึ้นใน Remote Compose รวมถึงภาพเคลื่อนไหวด้วย