คุณสามารถเห็นความแตกต่างระหว่างสองบริบทเมื่อคุณเปิดแอพของคุณโดยตรงจากหน้าจอหลักเทียบกับเมื่อเปิดแอพของคุณจากแอพอื่นผ่านการแชร์จุดประสงค์
นี่คือตัวอย่างการใช้งานจริงของสิ่งที่ "พฤติกรรมสแต็กหลังที่ไม่ได้มาตรฐาน" ที่กล่าวถึงโดย @CommonSenseCode หมายถึง:
สมมติว่าคุณมีสองปพลิเคชันที่สื่อสารกับแต่ละอื่น ๆApp1และApp2
เรียกใช้App2: MainActivityจากตัวเรียกใช้งาน จากนั้นก็เปิดตัว MainActivity App2: SecondaryActivity ทั้งที่ใช้บริบทของกิจกรรมหรือบริบทของแอปพลิเคชันกิจกรรมทั้งสองอยู่ในภารกิจเดียวกันและไม่เป็นไร (เนื่องจากคุณใช้โหมดเรียกใช้มาตรฐานและแฟล็กเจตนา) คุณสามารถกลับไปที่ MainActivity ด้วยการกดย้อนกลับและในแอพล่าสุดที่คุณมีเพียงงานเดียว
สมมติว่าคุณอยู่ในApp1และเปิดใช้App2: MainActivityโดยมีจุดประสงค์ในการแชร์ (ACTION_SEND หรือ ACTION_SEND_MULTIPLE) จากนั้นให้ลองเรียกใช้App2: SecondaryActivity (ทุกครั้งที่มีโหมดการเปิดใช้มาตรฐานและค่าสถานะความตั้งใจ) เกิดอะไรขึ้น:
หากคุณเปิดใช้งาน App2: กิจกรรมรองพร้อมบริบทแอปพลิเคชันบน Android <10 คุณจะไม่สามารถเปิดกิจกรรมทั้งหมดในงานเดียวกันได้ ฉันได้ลองกับ android 7 และ 8 และ SecondaryActivity เปิดตัวเสมอในงานใหม่ (ฉันเดาว่าเป็นเพราะ App2: SecondaryActivity เปิดตัวด้วยบริบทแอปพลิเคชัน App2 แต่คุณมาจาก App1 และคุณไม่ได้เปิดแอปพลิเคชัน App2 โดยตรง . ภายใต้ประทุน Android ยอมรับว่าและใช้ FLAG_ACTIVITY_NEW_TASK) สิ่งนี้อาจดีหรือไม่ดีขึ้นอยู่กับความต้องการของคุณสำหรับใบสมัครของฉันไม่ดี
บน Android 10 แอปขัดข้องด้วยข้อความ
"การโทร startActivity () จากด้านนอกของบริบทกิจกรรมต้องมีการตั้งค่าสถานะ FLAG_ACTIVITY_NEW_TASK นี่คือสิ่งที่คุณต้องการจริงหรือ" .
ดังนั้นเพื่อให้มันทำงานบน Android 10 คุณต้องใช้ FALG_ACTIVITY_NEW_TASK และคุณไม่สามารถเรียกใช้กิจกรรมทั้งหมดในงานเดียวกัน
ในขณะที่คุณสามารถดูพฤติกรรมที่แตกต่างระหว่างรุ่น Android แปลก
หากคุณเปิดใช้งาน App2: กิจกรรมรองพร้อมบริบทของกิจกรรมทั้งหมดเป็นไปด้วยดีและคุณสามารถเรียกใช้กิจกรรมทั้งหมดในภารกิจเดียวกันทำให้เกิดการนำทางแบ็คสแต็คเชิงเส้น
ฉันหวังว่าฉันได้เพิ่มข้อมูลที่เป็นประโยชน์บางอย่าง