วิศวกรซอฟต์แวร์อาวุโส
นักพัฒนาซอฟต์แวร์
Remote Compose นำเสนอวิธีใหม่ในการแสดง UI ที่สื่อความหมายและโต้ตอบได้บนแพลตฟอร์มระยะไกล เช่น วิดเจ็ต RemoteCompose จะแยก UI ออกจากการดำเนินการของโฮสต์เพื่อมอบข้อได้เปรียบที่สำคัญด้วยการจัดเรียงเลย์เอาต์เป็นเพย์โหลดไบนารีขนาดกะทัดรัด
ประโยชน์หลักๆ ได้แก่ การโต้ตอบที่ Edge ซึ่งช่วยให้แสดงผลได้อย่างมีประสิทธิภาพสูงผ่านการดำเนินการในเครื่องบนอุปกรณ์ระยะไกล การปรับขนาดที่ลื่นไหลซึ่งช่วยให้ UI ปรับเปลี่ยนตามอุปกรณ์ในรูปแบบต่างๆ ได้ผ่านการประเมินคอมโพเนนต์ฝั่งระยะไกล และเวิร์กโฟลว์ของนักพัฒนาแอปแบบรวมที่ช่วยให้ไม่ต้องใช้เฟรมเวิร์ก UI ระยะไกลเฉพาะแพลตฟอร์มผ่าน Jetpack Compose API ที่คุ้นเคย
เซสชันนี้จะอธิบายประโยชน์เหล่านี้และแสดงตัวอย่างการใช้งานจริง ซึ่งรวมถึงวิดเจ็ต Wear OS ที่ทันสมัยและประสบการณ์การใช้งานเครื่องมือติดตามการออกกำลังกาย Wear ที่ดูข้อมูลได้อย่างรวดเร็วใน Runkeeper
ข้อความถอดเสียง
สวัสดีทุกคน
ผมชื่อ 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
เราเห็นว่ามีการส่งเอกสารแล้ว
นอกจากเอกสารแล้ว ยังมีส่วนสำคัญอีก 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 วิธี
เรามาดูวิธีสร้างเอกสารเหล่านี้กันเลย
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 ไบต์
นอกจากนี้ เรายังมีฟังก์ชันด้วย
คุณจึงสร้างฟังก์ชันได้ และในที่นี้ฉันจะสร้างฟังก์ชันสำหรับกราฟนั้นอีกครั้ง จากนั้นฉันจะเรียกใช้กราฟนั้นหลายครั้งได้ง่ายๆ
ซึ่งจะช่วยประหยัดไบต์ได้อีก
และสำหรับคอมโพเนนต์ เรามีเทมเพลตใช่ไหม
แนวคิดคล้ายกับฟังก์ชัน แต่เน้นที่คอมโพเนนต์มากกว่าใช่ไหม
ดังนั้น ฉันจึงสามารถแทนที่คอมโพเนนต์ต่างๆ ทั้งหมด แถวต่างๆ ทั้งหมดเหล่านั้นได้โดยเพียงแค่เรียกใช้เทมเพลตนั้นด้วยพารามิเตอร์ที่ถูกต้อง ซึ่งช่วยประหยัดพื้นที่ในเอกสารได้มาก
และสิ่งสุดท้ายที่เรารองรับตั้งแต่เริ่มต้นคือการบีบอัดเอกสาร
โดยทั่วไปแล้ว คุณจะประหยัดขนาดของเอกสารได้ประมาณครึ่งหนึ่งด้วยวิธีนี้
สิ่งที่น่าสนใจอย่างหนึ่งคือส่วนหัวของเอกสารมีความพิเศษเล็กน้อย
เราจะไม่บีบอัดไฟล์
ซึ่งมีประโยชน์มากหากคุณต้องการคัดกรองเอกสารจำนวนมากอย่างรวดเร็วโดยไม่ต้องคลายการบีบอัด
สรุปก็คือ เอกสารมีขนาดเล็กอยู่แล้วโดยค่าเริ่มต้น แต่คุณสามารถทำให้มีขนาดเล็กลงได้อีกมาก
และคุณจะเห็นได้จากตัวอย่างเล็กๆ นี้ว่าการลดขนาดลงเป็นลำดับความสำคัญนั้นง่ายเพียงใด เนื่องจากขนาดที่เล็กเป็นฟีเจอร์หนึ่ง
ฉันได้พูดถึงวิดเจ็ตและวิดเจ็ต 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 รวมถึงภาพเคลื่อนไหวด้วย