Tutorial: กดปุ่ม Back ที่เครื่อง 2 ครั้งเพื่อปิดแอพ

มีหลายคนที่ติดการใช้ปุ่ม Back บนโทรศัพท์ (หรือแท็บเล็ต) เพื่อย้อนกลับ และออกจากแอพ แม้ว่าบางที ก็ไม่ได้ตั้งใจจะออกจากแอพ แต่ก็เผลอไปกดปุ่ม Back เข้า แอพก็ปิดเลย

ใน Thunkable Community มีโพสต์เรื่องนี้ไว้ ผมเห็นว่าน่าจะมีประโยชน์ เลยถือโอกาสดัดแปลงโค้ด แล้วนำมาเล่าให้ฟังถึงหลักการทำงานเป็นภาษาไทย จะได้เข้าใจกันง่ายๆ ครับ

เริ่มแรก เราต้องใช้คอมโพเนนต์ 2 อย่าง คือ

  • Clock สำหรับจับเวลา
  • Notifier สำหรับแสดงข้อความแจ้งเตือน
ส่วนของ Code จะเป็นดังนี้
ในตอนเริ่มต้น อีเวนต์ Screen Initialize จะทำงาน แล้วจะสั่งให้ Clock ยังไม่ต้องจับเวลา แต่ก็ตั้งเวลาเอาไว้ 5 วินาที

นอกจากนี้ ยังมีการสร้างตัวแปร Global ไว้หนึ่งตัว เพื่อบันทึกสถานะว่ามีการกด Back หรือยัง ดังนั้น จึงตั้งค่าเริ่มต้นให้เป็น False คือ ยังไม่มีการกด Back เลย

ทีนี้ เมื่อผู้ใช้กดปุ่ม Back บนเครื่อง ก็จะเกิดอีเวนต์ BackPressed ขึ้นมา ที่นี้เราก็จะสั่งให้ Clock เริ่มจับเวลา ที่เราต้องมีการจับเวลา ก็เพื่อให้แน่ใจว่า หากผู้ใช้กด Back ติดกัน 2 ครั้งภายในเวลา 5 วินาที นั่นหมายถึง ผู้ใช้ต้องการปิดแอพจริงๆ

พอ Clock เริ่มจับเวลา ต่อมา เราก็ใช้ If เพื่อตรวจสอบว่า นี่เป็นกด Back ครั้งแรก หรือครั้งที่ 2 โดยดูจากตัวแปร PressBack1Time ซึ่งหากเป็น false แสดงว่าเป็นการกดครั้งแรก ดังนั้น ก็จะแสดง Alert ให้ผู้ใช้ "กด Back อีกครั้งเพื่อปิดแอพ" รวมทั้งเปลี่ยนสถานะในตัวแปร PressBack1Time ให้เป็น True เพื่อบันทึกว่ามีการกด Back 1 ครั้งแล้ว

แต่หาก If ตรวจสอบค่าในตัวแปร PressBack1Time แล้วเป็น True ก็แสดงว่านี่เป็นการกด Back ครั้งที่ 2 เราก็จะสั่งปิดแอพ ด้วยคำสั่ง Close Application

ในส่วนของ Clock เมื่อครบเวลา 5 วินาทีที่ตั้งไว้ ก็จะเกิดอีเวนต์ Timer นั่นหมายความว่า ผู้ใช้กด Back ครั้งแรก แล้วเว้นห่าง 5 วินาทีไม่ยอมกด Back อีก เราก็จะรีเซตกลับไปเหมือนตอนที่ยังไม่กด Back นั่นคือ ให้ Clock หยุดจับเวลา และเปลี่ยนค่าตัวแปร PressBack1Time เป็น False นั่นคือ ถือว่ายังไม่มีการกด Back

หวังว่านี่จะมีประโยชน์นะครับ
ดัดแปลงมาจาก https://community.thunkable.com/t/android-phone-back-pressed-event-in-thunkable/251

Comments

Popular posts from this blog

บทที่ 4 - เรียนรู้เกี่ยวกับ User Interface

บทที่ 16 - สร้างแอพนับจำนวนก้าว (Pedometer)

บทที่ 3 - เริ่มใช้ App Inventor สร้างแอพแรก