วันเสาร์ที่ 2 สิงหาคม พ.ศ. 2557

Android create and destroy process


: ทำไมเครื่องที่มีหน่วยความจำเยอะ จึงทำงานได้เร็วกว่า?

อย่างที่เราทราบกันไปแล้วว่า หนึ่งหน้าที่เราเห็นของ app บนโทรศัพท์ android นั้นคือหนึ่ง activity ที่มี activity life-cycle เป็นของตัวเอง

- รูปที่ ๑ ได้แสดงให้เห็นว่า เมื่อเริ่มต้น app ใดๆจะเกิดการสร้าง process ขึ้นมาก่อน จากนั้นเริ่ม thread ของมัน เพื่อทำงานประมวลผลใดๆตามวัตถุประสงค์ของ app (สมมติชื่อว่า process A)

- รุปที่ ๒ ได้แสดงให้เห็นว่า android มีกระบวนการจัดการลำดับเหตุการณ์หรือประวัติ ในที่นี้ขอเรียกว่าปม history

- รูปที่ ๓ เกิดต่อเนื่องจากรูปที่ ๑ และ ๒ เริ่มจากสร้างหน้า activity1 ขึ้นมา เก็บประวัติการใช้ข้อมูลลง history1 หน้าดังกล่าวนี้ก็จะแสดงเป็นหน้าแรกของ app ตัวที่เรากำลังสนใจอยู่

เมื่อใดก็ตามที่เกิดการเปลี่ยนหน้า ย่อมเกิดการสร้างหน้าใหม่ขึ้นในครั้งแรก (first time) และเกิด activity ใหม่เช่นกัน

- รูปที่ ๓ นอกจากหน้าที่หนึ่งแล้ว สมมติเป็นเมนูเล่นเกม พอเราเลือกเมนูใดๆ เจ้า app ก็จะแสดงหน้าถัดไป ซึ่งก็จะสร้างปม history2 และ activity2 ตอนนี้เราจะมีทั้งหน้าแรก (activity1) และหน้าที่สอง (activity2) เก็บไว้ในหน่วยความจำ โดยหากว่าหน่วยความจำของเครื่องเราเพียงพอ ทั้งสอง activity ก็จะคงอยู่ต่อไป

- รูปที่ ๔ ในกรณีที่มีหน่วยความจำไม่มาก ก็จะเป็นโชคร้ายของ activity1 หรือหน้าแรกที่จะต้องถูกทำลายไปก่อน การทำลายในที่นี้ก็คือการคืนหน่วยความจำให้ระบบหรือก็คือตัวเครื่อง เพื่อที่ระบบจะนำไปใช้สอยอย่างอื่น (โดยปกติระบบของ android ทำงานส่วนนี้ให้อัตโนมัติ แต่อาจไม่สะใจผู้สร้าง app ที่อยากควบคุมหน่วยความจำเอง)

- รูปที่ ๕ เป็นเหตุการณ์ที่ app ปัจจุบันไปเรียก app อื่นให้ทำงานต่อจากมัน ซึ่งหากว่าหน่วยความจำของเครื่องไม่พอแล้วล่ะก็ เจ้า activity1 และ activity2 ก็จะถูกจัดการ เหลือไว้เพียงปม history เท่านั้น

ภายหลังหากมีการกดปุ่มย้อนกลับ ระบบ android ก็จะเข้าไปอ่านข้อมูลใน history นั้นๆเพื่อนำมันมาใช้กับ activity ของ history ปมดังกล่าว (ในที่นี้คือ history2 จะถูกอ่านและสร้าง activity2 อีกครั้ง หากกดปุ่มย้อนกลับอีก จึงเป็นคราวของ history1 และ activity1)

- รูปสุดท้าย รูปที่ ๖ หน่วยความจำเหลือน้อยมากจริงๆ ก็เป็นได้ว่าทั้ง app อาจถูกทำลายลงไป เพื่อที่ app ใหม่ซึ่งถูกเรียกในปัจจุบันนี้จะได้ใช้หน่วยความจำที่ว่านี้แทนครับ

ทราบอย่างนี้แล้ว เครื่องที่มีหน่วยความจำมากจึงราคาสูง เพราะประสิทธิภาพทั้งหมดก็เพื่อความราบรื่นและรวดเร็วนั่นเอง

คืนนี้สวัสดีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น