จากหน้าความรู้พื้นฐานของแอปพลิเคชันของคู่มือการพัฒนา Android:
โดยค่าเริ่มต้นกิจกรรมทั้งหมดในแอปพลิเคชันจะมีความสัมพันธ์ซึ่งกันและกันนั่นคือมีการตั้งค่าให้กิจกรรมทั้งหมดเป็นงานเดียวกัน
กิจกรรม "singleInstance" เป็นกิจกรรมเดียวในงาน หากกิจกรรมนั้นเริ่มต้นกิจกรรมอื่นกิจกรรมนั้นจะถูกเรียกใช้ในงานอื่นโดยไม่คำนึงถึงโหมดการเปิดใช้งานราวกับว่า FLAG_ACTIVITY_NEW_TASK เป็นไปตามเจตนา ในแง่อื่น ๆ โหมด "singleInstance" จะเหมือนกับ "singleTask"
ตามที่ระบุไว้ข้างต้นกิจกรรม "singleTask" หรือ "singleInstance" ไม่เกินหนึ่งอินสแตนซ์ดังนั้นจึงคาดว่าอินสแตนซ์นั้นจะจัดการกับ Intent ใหม่ทั้งหมด กิจกรรม "singleInstance" จะอยู่ที่ด้านบนสุดของสแต็กเสมอ (เนื่องจากเป็นกิจกรรมเดียวในงาน) ดังนั้นจึงอยู่ในตำแหน่งที่จะจัดการกับเจตนาได้เสมอ อย่างไรก็ตามกิจกรรม "singleTask" อาจมีหรือไม่มีกิจกรรมอื่น ๆ อยู่ข้างบนในสแต็ก หากเป็นเช่นนั้นจะไม่อยู่ในฐานะที่จะจัดการกับเจตนาและเจตนานั้นหลุดไป (แม้ว่าเจตนาจะหลุดไป แต่การมาถึงของมันจะทำให้งานมาถึงเบื้องหน้าซึ่งมันจะยังคงอยู่)
เนื่องจากมีกิจกรรมไม่เกินหนึ่งอินสแตนซ์ที่มีโหมดเปิดใช้งานอย่างใดอย่างหนึ่งปุ่มย้อนกลับจะนำคุณไปยังอินสแตนซ์ที่มีอยู่ของกิจกรรมในกรณีของคุณเสมอ
ข้อแตกต่างที่สำคัญคือ "singleTask" ไม่ต้องการการสร้างงานใหม่สำหรับกิจกรรมใหม่ที่เปิดตัวเมื่อมีการเลือกบางสิ่ง และจะไม่ต้องลบงานใหม่ที่ปุ่มย้อนกลับทุกครั้ง
เนื่องจากสแต็กกิจกรรมของคุณเกี่ยวข้องกับ "งาน" ของผู้ใช้คนเดียวและดูเหมือนว่าคุณจะมีโครงสร้าง Intent ที่ซับซ้อนซึ่ง singleInstance อาจเป็นประโยชน์ในการจัดการเสมอฉันขอแนะนำให้ใช้โหมดเปิดใช้งาน singleTask
นี่คือบล็อกโพสต์ที่ดีสำหรับข้อมูลเพิ่มเติมรวมถึงเครดิตสำหรับรูปภาพ: ชุดกิจกรรมและงาน Android - ข้อมูลเบื้องต้นเกี่ยวกับโมเดลองค์ประกอบ UI ของ Android