รูปแบบสถาปัตยกรรมใดที่ใช้บน Android [ปิด]


268

ฉันกำลังทำการวิจัยขนาดเล็กของแพลตฟอร์มมือถือและฉันต้องการที่จะรู้ว่ารูปแบบการออกแบบที่ใช้ใน Android?

เช่นใน iOS Model-view-controller ใช้กันอย่างแพร่หลายพร้อมกับการมอบหมายและรูปแบบอื่น ๆ

รูปแบบใดที่ Android ใช้เป็นพิเศษ?

แก้ไข

ฉันไม่ได้ขอรูปแบบการออกแบบที่ใช้ในเคอร์เนล Dalvik และอื่น ๆ แต่เกี่ยวกับรูปแบบที่นักพัฒนาแอปพลิเคชันจะได้พบในขณะที่พัฒนาแอปพลิเคชัน


2
เนื่องจากแพลตฟอร์ม Android ประกอบด้วยเคอร์เนลลินุกซ์มันเป็นชุดซอฟต์แวร์ที่ใหญ่เกินไปที่จะตอบคำถามนี้นอกเหนือจาก 'รูปแบบทั้งหมดที่ตั้งชื่อมาและอาจเป็นของใหม่ถ้าคุณดูอย่างละเอียดพอ'
Pete Kirkham

5
@Pete, Ok, คุณอาจจะพูดถูก แต่ในเวลาเดียวกันฉันไม่ได้ลงไปลึกเท่าเคอร์เนลฉันสนใจในพื้นผิวของแอปพลิเคชันเช่นใน iOS ที่UIViewControllerใช้งานโดยใช้ MVC ( UIViewControllerเป็นตัวควบคุมและรูทของมันUIViewคือมุมมอง) , UIApplicationใช้แอพลิเคชันที่มีการมอบหมายผู้แทนเป็นตัวแทนและอื่น ๆ ...
Burjua

4
ฉันคิดว่าคุณควรเรียนรู้ Android จากล่างขึ้นบนและไม่ลอง "พอร์ต" ที่คุณรู้จาก iOS เป็น Android มีหนังสือดีๆมากมายให้อ่าน Apress ทำให้เป็นพวง หากคุณเข้าใจแอพและระยะเวลาการให้บริการใน Android คุณควรจะได้รับวิธีการออกแบบแอพอย่างถูกต้อง
blindstuff


สิ่งนี้อาจช่วยได้: stackoverflow.com/a/49694378
Ali Nem

คำตอบ:


324

ฉันลองใช้ทั้งmodel-view – controller (MVC) และmodel – view – presenter pattern pattern สำหรับการพัฒนา Android การค้นพบของฉันเป็นแบบจำลอง - มุมมอง - คอนโทรลเลอร์ทำงานได้ดี แต่มี "ประเด็น" สองสามข้อ ทุกอย่างลงมาถึงวิธีที่คุณรับรู้ActivityระดับAndroid มันเป็นตัวควบคุมหรือเป็นมุมมอง?

Activityคลาสที่เกิดขึ้นจริงไม่ได้ขยายViewคลาสของ Android แต่จะจัดการกับการแสดงหน้าต่างให้กับผู้ใช้และจัดการกับเหตุการณ์ของหน้าต่างนั้น (onCreate, onPause, ฯลฯ )

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

ใน MVC คอนโทรลเลอร์ควรเป็นจุดเข้าหลัก ซึ่งเป็นที่ถกเถียงกันอยู่เล็กน้อยในกรณีนี้เมื่อใช้กับการพัฒนา Android เนื่องจากกิจกรรมเป็นจุดเริ่มต้นที่เป็นธรรมชาติของการใช้งานส่วนใหญ่

ด้วยเหตุนี้ฉันเองพบว่ารูปแบบ model-view – presenterนั้นเหมาะสมอย่างยิ่งสำหรับการพัฒนา Android เนื่องจากบทบาทของมุมมองในรูปแบบนี้คือ:

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

สิ่งนี้ช่วยให้คุณสามารถนำโมเดลของคุณไปใช้ได้:

มุมมอง - สิ่งนี้มีองค์ประกอบ UI ของคุณและจัดการกิจกรรมสำหรับพวกเขา

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

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

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

ลองดู ฉันพบว่ามันเหมาะกับการพัฒนา Android เป็นการส่วนตัว


14
คำตอบที่ดี! ฉันมีคำถาม: 1. กิจกรรม = ดูฉันได้รับสิ่งนี้ใช่ไหม 2. คุณจะใช้ผู้นำเสนอเป็นชั้นสาธารณะหรือเป็นชั้นในของกิจกรรมหรือไม่ หรือเป็นชิ้นส่วน (รวมทั้งชั้นในด้วย) 3. คุณหมายถึงจะใช้คลาสการถ่ายโอนแทนคลาสโมเดลจริงในกิจกรรม (ดู) หรือไม่?
manmal

14
1. ใช่ฉันใช้มันเป็นมุมมองภายในรูปแบบ MVP 2. โดยส่วนตัวแล้วฉันแบ่งพวกมันออกเป็นคลาสสาธารณะ แต่นี่เป็นเรื่องของรสนิยมฉันคิดว่า :) ฉันอธิบายได้ค่อนข้างแย่คำว่า "การส่งต่อคลาสที่ต้องการ" นั้นทำให้เข้าใจผิด สิ่งที่ฉันหมายถึงคือผู้นำเสนอนั่งอยู่ระหว่างมุมมองกับโมเดลมันอ่านโมเดลแล้วอัปเดตมุมมอง ฉันจะอัปเดตคำตอบของฉันให้ชัดเจนยิ่งขึ้น :)
JustDanyul

ขอบคุณที่สละเวลาฉันได้รับแล้ว :)
manmal

11
ฉันรักการพัฒนา Android จริง ๆ เพราะมัน decoupled อย่างมาก ฉันใช้ MVC อย่างไร: ใช้กิจกรรมหมดจดสำหรับผู้ใช้ IO และใช้บริการท้องถิ่นสำหรับการประมวลผลทั้งหมดของคุณ เมื่อบริการต้องการแสดงบางสิ่งบางอย่าง - ถ่ายทอดไปยังกิจกรรมของคุณ! ฉันเกลียดจริง ๆ เมื่อผู้พัฒนารายอื่นนำวิธีการประมวลผลมากเกินไปมาใช้ในกิจกรรม
คนอยู่ที่ไหนสักแห่ง

8
@Someone บางแห่งทำไมไม่มีคลาสที่จัดการสิ่งนี้ใน thread / AsyncTasks แยกต่างหากทำไมต้องใช้บริการ
บอย

87

อัปเดตพฤศจิกายน 2018

หลังจากทำงานและเขียนบล็อกเกี่ยวกับ MVC และ MVP ใน Android เป็นเวลาหลายปี (ดูเนื้อหาของคำตอบด้านล่าง) ฉันตัดสินใจที่จะรวบรวมความรู้และความเข้าใจของฉันในรูปแบบที่ครอบคลุมและย่อยง่ายขึ้น

ดังนั้นฉันจึงเปิดตัวหลักสูตรวิดีโอเกี่ยวกับสถาปัตยกรรมแอปพลิเคชัน Android ดังนั้นถ้าคุณกำลังสนใจในการเรียนรู้มากที่สุดรูปแบบสถาปัตยกรรมขั้นสูงในการพัฒนา Android, ตรวจสอบหลักสูตรที่ครอบคลุมที่นี่

คำตอบนี้ได้รับการปรับปรุงเพื่อให้ยังคงมีความเกี่ยวข้อง ณ เดือนพฤศจิกายน 2559


ดูเหมือนว่าคุณกำลังมองหารูปแบบสถาปัตยกรรมมากกว่ารูปแบบการออกแบบ

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

เนื่องจากแอปพลิเคชั่น Android (และ AOSP ส่วนใหญ่) เขียนด้วย Java ซึ่งเป็นแบบเชิงวัตถุฉันคิดว่าคุณจะลำบากในการมองหารูปแบบการออกแบบ OOP เดียวซึ่งไม่ได้ใช้กับ Android

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

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

เมื่อคุณพูดถึง MVC ในคำถามของคุณฉันเดาว่ารูปแบบสถาปัตยกรรมเป็นสิ่งที่คุณกำลังมองหา

ป้อนคำอธิบายภาพที่นี่


ในอดีตไม่มีแนวทางอย่างเป็นทางการจาก Google เกี่ยวกับสถาปัตยกรรมของแอปพลิเคชันซึ่ง (ด้วยเหตุผลอื่น ๆ ) ทำให้เกิดความสับสนโดยสิ้นเชิงในซอร์สโค้ดของแอป Android ในความเป็นจริงแม้กระทั่งทุกวันนี้แอปพลิเคชั่นส่วนใหญ่ที่ฉันเห็นยังคงไม่ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดของ OOP และไม่แสดงรหัสองค์กรที่ชัดเจน

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

สองปีที่แล้วมันยากมากที่จะหาข้อมูลเกี่ยวกับ MVC หรือ MVP บน Android วันนี้ MVC, MVP และ MVVM ได้กลายเป็น "คำพูดฉวัดเฉวียน" ในชุมชน Android และเราถูกล้อมรอบด้วยผู้เชี่ยวชาญมากมายที่พยายามโน้มน้าวให้เรารู้ว่า MVx นั้นดีกว่า MVy ในความคิดของฉันการอภิปรายว่า MVx ดีกว่า MVy ไม่มีจุดหมายอย่างสิ้นเชิงหรือไม่เพราะคำศัพท์นั้นคลุมเครือมาก - เพียงแค่ดูคำตอบของคำถามนี้และคุณจะรู้ว่าผู้คนต่าง ๆ สามารถเชื่อมโยงตัวย่อเหล่านี้

เนื่องจากความจริงที่ว่าการค้นหารูปแบบสถาปัตยกรรมที่ดีที่สุดสำหรับ Android ได้เริ่มต้นขึ้นอย่างเป็นทางการแล้วฉันคิดว่าเรากำลังจะได้เห็นความคิดอีกหลายประการ ณ จุดนี้มันเป็นไปไม่ได้จริง ๆ ที่จะทำนายรูปแบบ (หรือรูปแบบ) ที่จะกลายเป็นมาตรฐานอุตสาหกรรมในอนาคต - เราจะต้องรอดู (ฉันเดาว่ามันเป็นเรื่องของปีหรือสองปี)

อย่างไรก็ตามมีการคาดการณ์หนึ่งอย่างที่ฉันสามารถทำได้ด้วยความมั่นใจระดับสูง: การใช้ไลบรารี Data Binding จะไม่กลายเป็นมาตรฐานอุตสาหกรรม ฉันมั่นใจที่จะพูดว่าเพราะห้องสมุด Data Binding (ในการนำไปใช้ในปัจจุบัน) ให้ผลกำไรระยะสั้นและแนวทางสถาปัตยกรรมบางประเภท แต่มันจะทำให้โค้ดไม่สามารถบำรุงรักษาได้ในระยะยาว เมื่อผลกระทบระยะยาวของห้องสมุดนี้จะปรากฏขึ้น - มันจะถูกยกเลิก


ตอนนี้แม้ว่าเราจะมีแนวทางและเครื่องมือบางอย่างเป็นทางการในวันนี้ แต่โดยส่วนตัวแล้วฉันไม่คิดว่าแนวทางและเครื่องมือเหล่านี้เป็นตัวเลือกที่ดีที่สุดที่มีอยู่ (และแน่นอนว่าไม่ใช่แนวทางเดียว) ในแอปพลิเคชันของฉันฉันใช้สถาปัตยกรรม MVC ของตัวเอง มันง่ายสะอาดอ่านได้และทดสอบได้และไม่ต้องการไลบรารีเพิ่มเติม

MVC นี้ไม่เพียง แต่จะมีความแตกต่างจากผู้อื่นอย่างสิ้นเชิง แต่ก็มีพื้นฐานมาจากทฤษฎีที่ว่ากิจกรรมใน Android ไม่ใช่องค์ประกอบของ UIซึ่งมีผลกระทบอย่างมากต่อการจัดระเบียบรหัส

ดังนั้นถ้าคุณกำลังมองหารูปแบบสถาปัตยกรรมที่ดีสำหรับการใช้งาน Android ที่ตามSOLIDหลักการคุณสามารถหาคำอธิบายของหนึ่งในการโพสต์ของฉันเกี่ยวกับMVC และ MVP รูปแบบสถาปัตยกรรมใน Android


2
ทำได้ดีมากสำหรับการจัดหาทรัพยากรดังกล่าว! ขอบคุณ!
Aleksandar

1
ลิงค์ที่มีประโยชน์มาก!
Semaphor

ฉันชอบหลักสูตรวิดีโอของคุณ! ขอบคุณ
Viktor Apoyan

79

ป้อนคำอธิบายรูปภาพที่นี่

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

ฉันหวังว่าคุณจะเป็นประโยชน์


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


1
ขอบคุณสำหรับคำตอบนี้ฉันสับสนระหว่างสถาปัตยกรรมและแพทเทิร์นการออกแบบฉันยังคงมีคำถามหนึ่งว่า oo-design และ developmentement!
@Peter

ฉันลงคะแนนคำตอบนี้เพราะถึงแม้ว่าคำถามของ @Burjua กล่าวถึงรูปแบบการออกแบบโดยอ้างอิงถึงสถาปัตยกรรม แต่พวกเขาไม่เหมือนกัน ฉันพิจารณาคำตอบนี้ให้ข้อมูลและประกอบกับคำถามเดิมอย่างมาก
Xaren

Event bus ใช้รูปแบบการออกแบบของผู้เผยแพร่และผู้สมัครสมาชิก
Devrath

48

มีรูปแบบต่าง ๆ ที่ใช้ในกรอบ Android เช่น:

  • ตัวรับสัญญาณออกอากาศใช้รูปแบบการสังเกตการณ์
  • การเรียกใช้บริการ Remoter ใช้รูปแบบพร็อกซี
  • มุมมองและมุมมองกลุ่มใช้รูปแบบคอมโพสิต
  • เฟรมเวิร์กสื่อบันทึกใช้รูปแบบ Facade

5
กรุณาช่วยแบ่งปันลิงค์ (อ้างอิง)
shanraisshan

โปรดแชร์การอ้างอิงเพื่อที่ฉันจะได้สามารถหาข้อมูลเพิ่มเติมได้ ขอบคุณ
Syed Hamza Hassan

27

นี่เป็นบทความที่ยอดเยี่ยมเกี่ยวกับCommon Design Patterns สำหรับ Android :

รูปแบบ Creational:

  • ตัวสร้าง (เช่นAlertDialog.Builder )
  • ฉีดพึ่งพา (เช่นกริช 2 )
  • ซิงเกิล

รูปแบบโครงสร้าง:

  • อะแดปเตอร์ (เช่นRecyclerView.Adapter )
  • ซุ้ม (เช่นชุดติดตั้งเพิ่มเติม )

รูปแบบพฤติกรรม:

  • คำสั่ง (เช่นEventBus )
  • ผู้สังเกตการณ์ (เช่นRxAndroid )
  • Model View Controller
  • Model View ViewModel ( คล้ายกับรูปแบบ MVC ด้านบน )

1
ประเด็นสำคัญจากบทความน่าจะดี
Maxim G

ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Bhargav Rao

Event bus ใช้รูปแบบการออกแบบผู้จัดพิมพ์และผู้สมัครสมาชิก
Devrath

16

คลาส Android ต่อไปนี้ใช้รูปแบบการออกแบบ

1) ผู้ถือมุมมองใช้รูปแบบการออกแบบซิงเกิล

2) เจตนาใช้รูปแบบการออกแบบจากโรงงาน

3) อะแดปเตอร์ใช้รูปแบบการออกแบบอะแดปเตอร์

4) Broadcast Receiver ใช้รูปแบบการออกแบบของผู้สังเกตการณ์

5) มุมมองใช้รูปแบบการออกแบบคอมโพสิต

6) Media FrameWork ใช้รูปแบบการออกแบบFaçade


11

ในกรณีการแจ้งเตือนNotificationCompat.Builderใช้รูปแบบของตัวสร้าง

ชอบ,

mBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_notification)
                    .setContentTitle(getString(R.string.notification))
                    .setContentText(getString(R.string.ping))
                    .setDefaults(Notification.DEFAULT_ALL);

3
นี่คือรูปแบบตัวสร้างจริง
Piovezan

@Piovezan ฉันผิด ขอบคุณสำหรับการแก้ไขฉัน ฉันคิดว่ามันเป็นรูปแบบการตกแต่งแบบเรียบง่าย
Jeff T.

6

Android ยังใช้รูปแบบการออกแบบ ViewHolder

มันถูกใช้เพื่อปรับปรุงประสิทธิภาพของ ListView ขณะเลื่อนดู

รูปแบบการออกแบบ ViewHolder ช่วยให้คุณสามารถเข้าถึงมุมมองรายการแต่ละรายการโดยไม่จำเป็นต้องค้นหาและบันทึกรอบโปรเซสเซอร์ที่มีค่า มันหลีกเลี่ยงการเรียกใช้ findViewById () บ่อยครั้งระหว่างการเลื่อน ListView และจะทำให้ราบรื่น


5

รูปแบบทั้งหมดเหล่านี้ MVC, MVVM , MVP และรูปแบบการนำเสนอสามารถนำไปใช้กับแอพ Android ได้ แต่หากไม่มีกรอบงานของบุคคลที่สามมันไม่ใช่เรื่องง่ายเลยที่จะได้รับโครงสร้างที่ดีและโค้ดที่สะอาด

MVVM มาจาก PresentationModel เมื่อเราใช้ MVC, MVVMและPresentation Modelกับแอพ Android สิ่งที่เราต้องการคือการมีโครงร่างที่ชัดเจนและที่สำคัญกว่าสำหรับการทดสอบหน่วย

ในขณะนี้หากไม่มีกรอบงานของบุคคลที่สามคุณมักจะมีโค้ดจำนวนมาก (เช่น addXXListener (), findViewById () ฯลฯ ) ซึ่งไม่ได้เพิ่มมูลค่าทางธุรกิจใด ๆ ยิ่งไปกว่านั้นคุณต้องเรียกใช้การทดสอบหน่วย Android แทนการทดสอบ JUnit ปกติซึ่งใช้เวลานานในการเรียกใช้และทำให้การทดสอบหน่วยทำได้ไม่ดีนัก

ด้วยเหตุผลเหล่านี้เมื่อหลายปีก่อนเราเริ่มโครงการโอเพ่นซอร์ส RoboBindingกรอบงานนำเสนอข้อมูลที่มีผลผูกพันกับแพลตฟอร์ม Android RoboBinding ช่วยให้คุณเขียนรหัส UI ที่ง่ายต่อการอ่านทดสอบและบำรุงรักษา RoboBinding ลบต้องของรหัสที่ไม่จำเป็นเช่น addXXListener หรือดังนั้นและตรรกะกะ UI ที่จะนำเสนอรุ่นซึ่งเป็นPOJOและสามารถทดสอบผ่านการทดสอบ JUnit ปกติ RoboBinding มาพร้อมกับการทดสอบ JUnit มากกว่า 300 รายการเพื่อรับรองคุณภาพ


2

ฉันต้องการเพิ่มรูปแบบการออกแบบที่ถูกนำไปใช้ใน Android Framework นี่เป็นรูปแบบ Half Sync Half Async ที่ใช้ในการปรับใช้ Asynctask ดูการสนทนาของฉันได้ที่

https://docs.google.com/document/d/1_zihWXAwgTAdJc013-bOLUHPMrjeUBZnDuPkzMxEEj0/edit?usp=sharing


1

ใน Android รูปแบบ "ตัวประมวลผลคิวงาน" มักใช้เพื่อถ่ายโอนงานจากเธรดหลักของแอปพลิเคชัน

ตัวอย่าง: การออกแบบคลาส IntentService

IntentService ได้รับ Intents เรียกใช้เธรดผู้ปฏิบัติงานและหยุดบริการตามความเหมาะสมคำร้องขอทั้งหมดจะได้รับการจัดการบนเธรดผู้ปฏิบัติงานเดียว


0

Binder ใช้ "รูปแบบการสังเกตการณ์" สำหรับการแจ้งเตือนผู้รับถึงตาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.