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