ฉันประสบปัญหามากมายเกี่ยวกับรูปแบบกิจกรรมที่หลากหลายซึ่งฉันไม่แนะนำอย่างยิ่งเว้นแต่จะมีเหตุผลที่ดีที่จะเลือก
ข้อเสียของกิจกรรมหลายอย่าง
การใช้หลายกิจกรรมเป็นการยากมากที่จะ refactor code เพื่อส่งคืนข้อมูลจากกิจกรรม
หากคุณเรียกกิจกรรมย่อยกิจกรรมหลักอาจถูกฆ่า แต่คุณไม่เคยพบว่าในขณะที่การดีบักบนอุปกรณ์ที่เหมาะสมดังนั้นคุณต้องจัดการสถานะการบันทึกและสถานะการกู้คืนอย่างถูกต้องเสมอ นั่นคือความเจ็บปวด ลองนึกภาพการเรียกใช้เมธอดบนไลบรารี (เช่นกิจกรรมอื่น) และคุณจะต้องมั่นใจว่าเมื่อวิธีการนั้นส่งคืนแอปของคุณจะต้องสามารถสร้างสถานะใหม่ได้อย่างสมบูรณ์พร้อมกับฟิลด์ทั้งหมดบนวัตถุทั้งหมดใน VM (เช่นกิจกรรม restoreIntance) มันบ้า
ในทางกลับกันเมื่อคุณเปิด subactivity VM อาจถูกฆ่าเนื่องจากมีการสร้าง subactivity เป็นครั้งแรกเช่นเมื่อแอปถูกย่อเล็กสุดในขณะที่แสดง subactivity
มันสะอาดกว่ามากที่มีเพียงที่เดียวในการจัดเก็บสถานะแอปที่เกี่ยวข้องและในกรณีของฉันส่วนใหญ่แล้วถ้า VM ถูกฆ่าฉันต้องการให้ผู้ใช้กลับไปที่หน้าจอหลักและปล่อยให้พวกเขาทำสิ่งต่างๆอีกครั้งเพราะฉันไม่ ไม่ใช้เวลา 30-50 ชั่วโมงในการเขียนโค้ดบันทึก / กลับมาใช้งานฟังก์ชันที่ 0.1% ของผู้ใช้จะเคยสัมผัส
ทางเลือก
ส่วนย่อยหรือเพียงแค่จัดการมุมมองกิจกรรมของคุณด้วยตัวคุณเอง การจัดการมุมมองด้วยตนเองต้องการการเข้ารหัสทางเลือกในการสลับมุมมองสำหรับกิจกรรม / ส่วนที่มีการเปลี่ยนหากต้องการ
และไม่มันไม่ได้หมายถึงกิจกรรมขนาดใหญ่อย่างที่แนะนำไว้ในคำตอบที่ได้รับการยอมรับ แต่อย่างใดนอกเหนือจากแอปขนาดใหญ่เพียงแอปเดียว เพียงแค่ต้องออกแบบโค้ดเบสให้เป็นชิ้นส่วนที่เหมาะสมมากขึ้นเนื่องจากมีมุมมองการจัดการงานมากกว่าเล็กน้อยแม้ว่าจะมีงานน้อยกว่ามากในการจัดการสถานะกิจกรรมและความแปลกประหลาดอื่น ๆ
อาจเกี่ยวข้อง: Reddit: เป็นทางการ: Google แนะนำสถาปัตยกรรมแอปกิจกรรมเดียวอย่างเป็นทางการ