เมื่อล็อกเอาต์ให้ล้างสแต็คประวัติกิจกรรมป้องกันปุ่ม "ย้อนกลับ" จากการเปิดกิจกรรมที่ลงชื่อเข้าใช้เท่านั้น
กิจกรรมทั้งหมดในแอปพลิเคชันของฉันต้องการให้ผู้ใช้ลงชื่อเข้าใช้เพื่อดู ผู้ใช้สามารถออกจากระบบได้เกือบทุกกิจกรรม นี่คือข้อกำหนดของแอปพลิเคชัน ที่จุดใด ๆ Activityหากผู้ใช้ล็อกเอาผมต้องการที่จะส่งให้ผู้ใช้เข้าสู่ระบบ ณ จุดนี้ฉันต้องการให้กิจกรรมนี้อยู่ด้านล่างของสแต็คประวัติเพื่อให้การกดปุ่ม "ย้อนกลับ" ส่งคืนผู้ใช้ไปยังหน้าจอหลักของ Android ฉันเคยเห็นคำถามนี้ถามสถานที่ที่แตกต่างกันไม่กี่ทั้งหมดตอบด้วยคำตอบที่คล้ายกัน (ที่ฉันร่างที่นี่) แต่ฉันต้องการที่จะก่อให้เกิดที่นี่เพื่อรวบรวมข้อเสนอแนะ ฉันได้ลองเปิดกิจกรรมการเข้าสู่ระบบโดยการตั้งค่าIntentสถานะFLAG_ACTIVITY_CLEAR_TOPที่ดูเหมือนว่าจะทำตามที่ระบุไว้ในเอกสาร แต่ไม่บรรลุเป้าหมายของฉันในการวางกิจกรรมการเข้าสู่ระบบที่ด้านล่างของสแต็คประวัติศาสตร์และป้องกันผู้ใช้จากการนำทางย้อนกลับ ไปยังกิจกรรมการลงชื่อเข้าใช้ที่เห็นก่อนหน้านี้ ฉันพยายามใช้android:launchMode="singleTop"กิจกรรมการเข้าสู่ระบบในรายการด้วย แต่สิ่งนี้ไม่บรรลุเป้าหมายของฉันเช่นกัน (และดูเหมือนว่าจะไม่มีผลกระทบต่อไป) ฉันเชื่อว่าฉันต้องล้างสแต็คประวัติหรือจบกิจกรรมที่เปิดก่อนหน้านี้ทั้งหมด ทางเลือกหนึ่งคือการมีonCreateสถานะเข้าสู่ระบบการตรวจสอบของแต่ละกิจกรรมและfinish()หากไม่ได้เข้าสู่ระบบ ฉันไม่ชอบตัวเลือกนี้เนื่องจากปุ่มย้อนกลับจะยังคงใช้งานได้นำทางกลับเป็นกิจกรรมที่ปิดตัวเอง ตัวเลือกถัดไปคือการเก็บรักษาLinkedListของการอ้างอิงถึงกิจกรรมที่เปิดอยู่ทั้งหมดที่สามารถเข้าถึงได้แบบคงที่จากทุกที่ (อาจใช้การอ้างอิงที่อ่อนแอ) เมื่อออกจากระบบฉันจะเข้าถึงรายการนี้และทำซ้ำกิจกรรมที่เปิดก่อนหน้านี้ทั้งหมดโดยเรียกใช้finish()แต่ละรายการ ฉันจะเริ่มใช้วิธีนี้ในไม่ช้า อย่างไรก็ตามฉันควรใช้Intentเล่ห์เหลี่ยมธงเพื่อบรรลุเป้าหมายนี้ ฉันมีความสุขเกินกว่าจะพบว่าฉันสามารถทำตามข้อกำหนดของแอปพลิเคชันของฉันได้โดยไม่ต้องใช้วิธีใดวิธีหนึ่งจากสองวิธีที่ฉันได้อธิบายไว้ข้างต้น มีวิธีในการทำสิ่งนี้ให้สำเร็จโดยใช้Intentหรือการตั้งค่ารายการหรือตัวเลือกที่สองของฉันการรักษาLinkedListกิจกรรมที่เปิดไว้เป็นตัวเลือกที่ดีที่สุดหรือไม่? หรือมีตัวเลือกอื่นที่ฉันสามารถมองเห็นได้อย่างสมบูรณ์?