
การย้อนกลับแบบคาดเดาเป็นฟีเจอร์การนำทางด้วยท่าทางสัมผัสช่วยให้ผู้ใช้ดูตัวอย่างว่าการปัดกลับจะนำพวกเขาไปที่ใด
เช่น การใช้ท่าทางสัมผัสเพื่อกลับอาจแสดงตัวอย่างภาพเคลื่อนไหวของหน้าจอหลักที่อยู่เบื้องหลังแอป ดังที่แสดงในภาพตัวอย่างในรูปที่ 1
ตั้งแต่ Android 15 เป็นต้นไป ตัวเลือกสำหรับนักพัฒนาแอปสำหรับภาพเคลื่อนไหวแบบคาดเดาการย้อนกลับจะไม่มีให้บริการอีกต่อไป ตอนนี้ภาพเคลื่อนไหวของระบบ เช่น กลับบ้าน ข้ามงาน และข้ามกิจกรรมจะปรากฏขึ้นสำหรับแอปที่เลือกใช้ท่าทางสัมผัสย้อนกลับแบบคาดการณ์ทั้งหมดหรือที่ระดับกิจกรรม
คุณสามารถทดสอบภาพเคลื่อนไหวการกลับไปที่หน้าแรกนี้ (ตามที่อธิบายไว้ในส่วนถัดไปของหน้านี้)
คุณต้องอัปเดตแอปที่รองรับท่าทางสัมผัสการย้อนกลับแบบคาดการณ์ล่วงหน้าโดยใช้
OnBackPressedCallback
AppCompat 1.6.0-alpha05
(AndroidX) ขึ้นไป หรือใช้ API แพลตฟอร์ม OnBackInvokedCallback
ใหม่ แอปส่วนใหญ่ใช้ AndroidX API ที่เข้ากันได้แบบย้อนหลัง
การอัปเดตนี้แสดงเส้นทางการย้ายข้อมูลเพื่อขัดจังหวะการนำทางย้อนกลับอย่างเหมาะสม ซึ่งเกี่ยวข้องกับการเปลี่ยนการขัดจังหวะการย้อนกลับจาก KeyEvent.KEYCODE_BACK
และคลาสที่มีเมธอด onBackPressed
เช่น Activity
และ Dialog
ด้วย Back API ของระบบใหม่
วิดีโอเกี่ยวกับ Codelab และ Google I/O
นอกจากการใช้เอกสารประกอบในหน้านี้แล้ว โปรดลองใช้ Codelab ซึ่งให้บริการการใช้งาน Use Case ทั่วไปของ WebView ที่จัดการท่าทางสัมผัสย้อนกลับแบบคาดการณ์โดยใช้ AndroidX Activity API
นอกจากนี้ คุณยังดูวิดีโอ Google I/O ซึ่งมีตัวอย่างเพิ่มเติมเกี่ยวกับการใช้งาน AndroidX และ API ของแพลตฟอร์มได้ด้วย
อัปเดตแอปที่ใช้การนําทางกลับเริ่มต้น
การอัปเดตแอปให้รองรับฟีเจอร์นี้นั้นง่ายมากหากแอปไม่ได้ใช้ลักษณะการกดกลับที่กำหนดเอง (กล่าวคือ ปล่อยให้ระบบจัดการการกดกลับ) เลือกใช้ฟีเจอร์นี้ตามที่อธิบายไว้ในคู่มือนี้
หากแอปใช้ Fragments หรือคอมโพเนนต์การนำทาง ให้อัปเกรดเป็น AndroidX Activity 1.6.0-alpha05 ขึ้นไปด้วย
อัปเดตแอปที่ใช้การนําทางกลับที่กําหนดเอง
หากแอปใช้ลักษณะการกดย้อนกลับที่กำหนดเอง เส้นทางการย้ายข้อมูลจะแตกต่างกันไป โดยขึ้นอยู่กับว่าแอปใช้ AndroidX หรือไม่ และจัดการการนำทางกลับอย่างไร
แอปของคุณใช้ AndroidX | วิธีที่แอปจัดการการนําทางกลับ | เส้นทางการย้ายข้อมูลที่แนะนํา (ลิงก์ในหน้านี้) |
ใช่ | API ของ AndroidX | ย้ายข้อมูลการติดตั้งใช้งาน AndroidX ที่มีอยู่กลับ |
API ของแพลตฟอร์มที่ไม่รองรับ | ย้ายข้อมูลแอป AndroidX ที่มี API การนำทางกลับที่ไม่รองรับไปยัง AndroidX API | |
ไม่ | API ของแพลตฟอร์มที่ไม่รองรับ แต่ย้ายข้อมูลได้ | ย้ายข้อมูลแอปที่ใช้ API การนําทางกลับที่ไม่รองรับไปยัง API ของแพลตฟอร์ม |
API ของแพลตฟอร์มที่ไม่รองรับ แต่ไม่สามารถย้ายข้อมูลได้ | เลื่อนการเลือกใช้จนกว่าจะกลายเป็นฟีเจอร์ที่จำเป็น |
ย้ายข้อมูลการใช้งานการนำทางกลับของ AndroidX
Use Case นี้เป็นกรณีการใช้งานที่พบบ่อยที่สุด (และแนะนํามากที่สุด) ซึ่งมีผลกับแอปใหม่หรือแอปที่มีอยู่ที่ใช้การจัดการการนำทางด้วยท่าทางสัมผัสที่กำหนดเองด้วย OnBackPressedDispatcher
ตามที่อธิบายไว้ในระบุการนําทางย้อนกลับที่กําหนดเอง
หากแอปของคุณจัดอยู่ในหมวดหมู่นี้ ให้ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มการรองรับท่าทางสัมผัสย้อนกลับแบบคาดการณ์
อัปเกรดเป็น AndroidX Activity 1.6.0-alpha05 เพื่อให้มั่นใจว่า API ที่ใช้ API ของ
OnBackPressedDispatcher
อยู่แล้ว (เช่น Fragment และคอมโพเนนต์การนำทาง) จะทำงานได้อย่างราบรื่นกับท่าทางสัมผัสการย้อนกลับแบบคาดเดา// In your build.gradle file: dependencies { // Add this in addition to your other dependencies implementation "androidx.activity:activity:1.6.0-alpha05"
เลือกใช้ท่าทางสัมผัสการย้อนกลับแบบคาดการณ์ตามที่อธิบายในหน้านี้
ย้ายข้อมูลแอป AndroidX ซึ่งมี API การนำทางกลับที่ไม่รองรับไปยัง AndroidX API
หากแอปใช้ไลบรารี AndroidX แต่ติดตั้งใช้งานหรืออ้างอิง API การนำทางกลับที่ไม่รองรับ คุณจะต้องเปลี่ยนไปใช้ AndroidX API เพื่อรองรับลักษณะการทำงานใหม่
วิธีย้ายข้อมูล API ที่ระบบไม่รองรับไปยัง AndroidX API
ย้ายข้อมูลตรรกะการจัดการ Back ของระบบไปยัง
OnBackPressedDispatcher
ของ AndroidX ด้วยการติดตั้งใช้งานOnBackPressedCallback
ดูคําแนะนําโดยละเอียดได้ที่หัวข้อระบุการนําทางกลับที่กําหนดเองปิดใช้
OnBackPressedCallback
เมื่อพร้อมที่จะหยุดขัดจังหวะท่าทางสัมผัสย้อนกลับหยุดการขัดจังหวะเหตุการณ์ Back ผ่าน
OnBackPressed
หรือKeyEvent.KEYCODE_BACK
อย่าลืมอัปเกรดเป็น กิจกรรม AndroidX 1.6.0-alpha05
// In your build.gradle file: dependencies { // Add this in addition to your other dependencies implementation "androidx.activity:activity:1.6.0-alpha05"
เมื่อย้ายข้อมูลแอปเรียบร้อยแล้ว ให้เลือกใช้ท่าทางสัมผัสเพื่อกลับไปยังหน้าแรกแบบคาดการณ์ (ตามที่อธิบายไว้ในหน้านี้) เพื่อดูภาพเคลื่อนไหวของระบบในการกลับไปยังหน้าแรก
ย้ายข้อมูลแอปที่ใช้ API การนําทางกลับที่ไม่รองรับไปยัง API ของแพลตฟอร์ม
หากแอปใช้ไลบรารี AndroidX ไม่ได้และใช้หรืออ้างอิงถึงการนำทางกลับที่กำหนดเองโดยใช้ API ที่ไม่รองรับแทน คุณต้องย้ายข้อมูลไปยัง API ของแพลตฟอร์ม OnBackInvokedCallback
ทําตามขั้นตอนต่อไปนี้เพื่อย้ายข้อมูล API ที่ไม่รองรับไปยัง API ของแพลตฟอร์ม
ใช้
OnBackInvokedCallback
API ใหม่ในอุปกรณ์ที่ใช้ Android 13 ขึ้นไป และใช้ API ที่ระบบไม่รองรับในอุปกรณ์ที่ใช้ Android 12 หรือต่ำกว่าลงทะเบียนตรรกะการย้อนกลับที่กำหนดเองใน
OnBackInvokedCallback
ด้วยonBackInvokedDispatcher
วิธีนี้จะช่วยป้องกันไม่ให้กิจกรรมปัจจุบันเสร็จสิ้น และ Callback ของคุณจะมีโอกาสโต้ตอบกับการดำเนินการ "กลับ" เมื่อผู้ใช้ดำเนินการตามการนำทาง "กลับ" ของระบบจนเสร็จสิ้นยกเลิกการลงทะเบียน
OnBackInvokedCallback
เมื่อพร้อมที่จะหยุดการสกัดกั้นท่าทางสัมผัสย้อนกลับ มิเช่นนั้น ผู้ใช้อาจเห็นลักษณะการทำงานที่ไม่พึงประสงค์เมื่อใช้การนําทางกลับของระบบ เช่น "ค้าง" ระหว่างมุมมองต่างๆ และบังคับให้ผู้ใช้ปิดแอปตัวอย่างวิธีย้ายข้อมูลตรรกะออกจาก
onBackPressed
มีดังนี้Kotlin
@Override fun onCreate() { if (BuildCompat.isAtLeastT()) { onBackInvokedDispatcher.registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT ) { /** * onBackPressed logic goes here. For instance: * Prevents closing the app to go home screen when in the * middle of entering data to a form * or from accidentally leaving a fragment with a WebView in it * * Unregistering the callback to stop intercepting the back gesture: * When the user transitions to the topmost screen (activity, fragment) * in the BackStack, unregister the callback by using * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback * (https://developer.android.com/reference/kotlin/android/window/OnBackInvokedDispatcher#unregisteronbackinvokedcallback) */ } } }
Java
@Override void onCreate() { if (BuildCompat.isAtLeastT()) { getOnBackInvokedDispatcher().registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT, () -> { /** * onBackPressed logic goes here - For instance: * Prevents closing the app to go home screen when in the * middle of entering data to a form * or from accidentally leaving a fragment with a WebView in it * * Unregistering the callback to stop intercepting the back gesture: * When the user transitions to the topmost screen (activity, fragment) * in the BackStack, unregister the callback by using * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback) */ } ); } }
หยุดการขัดจังหวะเหตุการณ์ Back ผ่าน
OnBackPressed
หรือKeyEvent.KEYCODE_BACK
สำหรับ Android 13 ขึ้นไปเมื่อย้ายข้อมูลแอปเรียบร้อยแล้ว ให้เลือกใช้ท่าทางสัมผัสเพื่อย้อนกลับแบบคาดการณ์ (ตามที่อธิบายไว้ในหน้านี้) เพื่อให้
OnBackInvokedCallback
ใช้งานได้
คุณสามารถลงทะเบียน OnBackInvokedCallback
กับ PRIORITY_DEFAULT
หรือ PRIORITY_OVERLAY
ซึ่งไม่พร้อมใช้งานใน AndroidX OnBackPressedCallback
ที่คล้ายกัน การลงทะเบียนการโทรกลับด้วย PRIORITY_OVERLAY
จะมีประโยชน์ในบางกรณี
ซึ่งจะมีผลเมื่อคุณย้ายข้อมูลจาก onKeyPreIme()
และ Callback ของคุณต้องได้รับการจับมือกลับแทน IME ที่เปิดอยู่ IME จะลงทะเบียนการเรียกกลับกับ PRIORITY_DEFAULT
เมื่อเปิด
ลงทะเบียนการเรียกกลับด้วย PRIORITY_OVERLAY
เพื่อให้แน่ใจว่า OnBackInvokedDispatcher
จะส่งท่าทางสัมผัสกลับไปยังการเรียกกลับแทน IME ที่เปิดอยู่
เลือกใช้ท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้
เมื่อตัดสินใจเลือกวิธีอัปเดตแอปตามกรณีของคุณแล้ว ให้เลือกใช้เพื่อรองรับท่าทางสัมผัสเพื่อย้อนกลับแบบคาดการณ์
หากต้องการเลือกใช้ ให้ตั้งค่า Flag android:enableOnBackInvokedCallback
เป็น true
ในแท็ก <application>
ของ AndroidManifest.xml
<application
...
android:enableOnBackInvokedCallback="true"
... >
...
</application>
หากไม่ระบุค่า ค่าเริ่มต้นจะเป็น false
และดำเนินการต่อไปนี้
- ปิดใช้ภาพเคลื่อนไหวของระบบสำหรับท่าทางสัมผัสย้อนกลับแบบคาดเดา
- ละเว้น
OnBackInvokedCallback
แต่การเรียกใช้OnBackPressedCallback
จะยังคงทำงานต่อไป
เลือกใช้ที่ระดับกิจกรรม
ตั้งแต่ Android 14 เป็นต้นไป Flag android:enableOnBackInvokedCallback
จะช่วยให้คุณเลือกใช้ภาพเคลื่อนไหวของระบบตามการคาดการณ์ที่ระดับกิจกรรมได้ ลักษณะการทำงานนี้ช่วยให้ย้ายข้อมูลแอปขนาดใหญ่ที่มีหลายกิจกรรมไปยังท่าทางสัมผัสย้อนกลับแบบคาดการณ์ได้ง่ายขึ้น ใน Android 15 ฟีเจอร์การย้อนกลับแบบคาดการณ์จะไม่อยู่หลังตัวเลือกสำหรับนักพัฒนาแอปอีกต่อไป แอปสามารถเลือกใช้การกดย้อนกลับแบบคาดการณ์ได้ทั้งหมดหรือในระดับกิจกรรม
โค้ดต่อไปนี้แสดงตัวอย่างการใช้ enableOnBackInvokedCallback
เพื่อเปิดใช้ภาพเคลื่อนไหวของระบบที่กลับไปยังหน้าแรกจาก MainActivity
<manifest ...>
<application . . .
android:enableOnBackInvokedCallback="false">
<activity
android:name=".MainActivity"
android:enableOnBackInvokedCallback="true"
...
</activity>
<activity
android:name=".SecondActivity"
android:enableOnBackInvokedCallback="false"
...
</activity>
</application>
</manifest>
ในตัวอย่างก่อนหน้านี้ การตั้งค่า android:enableOnBackInvokedCallback=true
for
".SecondActivity"
จะเปิดใช้ภาพเคลื่อนไหวของระบบข้ามกิจกรรม
โปรดคำนึงถึงข้อควรพิจารณาต่อไปนี้เมื่อใช้ Flag android:enableOnBackInvokedCallback
- การตั้งค่า
android:enableOnBackInvokedCallback=false
จะปิดภาพเคลื่อนไหวย้อนกลับแบบคาดการณ์ที่ระดับกิจกรรมหรือระดับแอป ทั้งนี้ขึ้นอยู่กับตำแหน่งที่คุณตั้งค่าแท็ก และสั่งให้ระบบไม่สนใจการเรียกใช้ API ของแพลตฟอร์มOnBackInvokedCallback
อย่างไรก็ตาม การเรียกOnBackPressedCallback
จะยังคงทํางานต่อไปเนื่องจากOnBackPressedCallback
เข้ากันได้แบบย้อนหลังและเรียกใช้onBackPressed
API ซึ่งระบบไม่รองรับก่อน Android 13 - การตั้งค่า Flag
enableOnBackInvokedCallback
ที่ระดับแอปจะกำหนดค่าเริ่มต้นสำหรับทุกกิจกรรมในแอป คุณลบล้างค่าเริ่มต้นต่อกิจกรรมได้โดยการตั้งค่า Flag ที่ระดับกิจกรรมดังที่แสดงในตัวอย่างโค้ดก่อนหน้านี้
แนวทางปฏิบัติแนะนำสำหรับการติดต่อกลับ
แนวทางปฏิบัติแนะนำในการใช้ระบบการเรียกกลับจากระบบที่รองรับมีดังนี้
BackHandler
(สำหรับเขียน), OnBackPressedCallback
หรือ
OnBackInvokedCallback
ระบุสถานะ UI ที่เปิดและปิดใช้การเรียกกลับแต่ละรายการ
สถานะ UI เป็นพร็อพเพอร์ตี้ที่อธิบาย UI เราขอแนะนําให้ทําตามขั้นตอนระดับสูงเหล่านี้
ระบุสถานะ UI ที่เปิดและปิดใช้การเรียกกลับแต่ละรายการ
กำหนดสถานะนั้นโดยใช้ประเภทผู้ถือข้อมูลที่ได้รับอนุญาตให้สังเกตพฤติกรรมผู้ใช้ได้ เช่น
StateFlow
หรือ Compose State แล้วเปิดหรือปิดใช้ Callback เมื่อสถานะมีการเปลี่ยนแปลง
หากก่อนหน้านี้แอปของคุณเชื่อมโยงตรรกะการกดกลับกับคำสั่งเงื่อนไข การดำเนินการนี้อาจหมายความว่าคุณกำลังตอบสนองต่อเหตุการณ์การกดกลับหลังจากที่เหตุการณ์ดังกล่าวเกิดขึ้นแล้ว หลีกเลี่ยงรูปแบบนี้เมื่อมี Callback ที่ใหม่กว่า หากเป็นไปได้ ให้ย้ายการเรียกกลับไว้นอกคำสั่งเงื่อนไขและเชื่อมโยงการเรียกกลับกับประเภทตัวเก็บข้อมูลแบบสังเกตได้แทน
ใช้ Callback ของระบบสำหรับ UI Logic
ตรรกะ UI จะกำหนดวิธีแสดง UI ใช้การเรียกกลับเมื่อระบบย้อนกลับเพื่อเรียกใช้ตรรกะ UI เช่น การแสดงป๊อปอัปหรือเรียกใช้ภาพเคลื่อนไหว
หากแอปเปิดใช้การเรียกกลับระบบสำหรับการกดย้อนกลับ การเคลื่อนไหวแบบคาดเดาจะไม่ทำงานและคุณต้องจัดการเหตุการณ์การกดย้อนกลับ อย่าสร้างการเรียกกลับเพื่อเรียกใช้ตรรกะที่ไม่เกี่ยวข้องกับ UI เท่านั้น
เช่น หากคุณจะขัดขวางเหตุการณ์ Back เพื่อบันทึกเท่านั้น ให้บันทึกภายในวงจรของกิจกรรมหรือ Fragment แทน
- สําหรับกรณีกิจกรรมต่อกิจกรรมหรือกรณีจากเหตุการณ์ต่อกิจกรรม ให้บันทึกหาก
isFinishing
ภายในonDestroy
เป็นtrue
ภายในวงจรของกิจกรรม - สําหรับกรณีจากข้อมูลโค้ดหนึ่งไปยังอีกข้อมูลโค้ดหนึ่ง ให้บันทึกหาก
isRemoving
ภายในonDestroy
เป็นจริงภายในวงจรชีวิตของมุมมองข้อมูลโค้ด หรือเข้าสู่ระบบโดยใช้วิธีonBackStackChangeStarted
หรือonBackStackChangeCommitted
ภายในFragmentManager.OnBackStackChangedListener
สำหรับกรณี Compose ให้บันทึกภายในการเรียกกลับ onCleared()
ของ ViewModel
ที่เชื่อมโยงกับปลายทาง Compose นี่เป็นสัญญาณที่ดีที่สุดในการระบุว่ามีการนำปลายทางการเขียนออกจากกองซ้อนด้านหลังและทำลายแล้ว
สร้าง Callback ที่มีหน้าที่รับผิดชอบรายการเดียว
คุณสามารถเพิ่ม Callback หลายรายการไปยังผู้มอบหมายงานได้ ระบบจะเพิ่ม Callback ลงในสแต็กซึ่งฟังก์ชัน Callback ที่เปิดใช้ล่าสุดจะจัดการท่าทางสัมผัสการย้อนกลับครั้งถัดไปด้วยท่าทางสัมผัสการติดต่อกลับ 1 ครั้งต่อท่าทางสัมผัสการย้อนกลับ
การจัดการสถานะ "เปิดใช้" ของคอลแบ็กจะง่ายขึ้นหากคอลแบ็กดังกล่าวมีหน้าที่เพียงอย่างเดียว เช่น

รูปที่ 2 แสดงวิธีที่คุณสามารถมีคอลแบ็กหลายรายการในกอง โดยแต่ละรายการจะมีหน้าที่รับผิดชอบอย่างละอย่าง โค้ดเรียกซ้ำจะทำงานก็ต่อเมื่อปิดใช้โค้ดเรียกซ้ำที่อยู่เหนือในกองเท่านั้น ในตัวอย่างนี้ ระบบจะเปิดใช้ Callback "คุณแน่ใจไหมว่า..." เมื่อผู้ใช้ป้อนข้อมูลลงในแบบฟอร์ม และจะปิดใช้ การเรียกกลับจะเปิดกล่องโต้ตอบการยืนยันเมื่อผู้ใช้ปัดกลับเพื่อออกจากแบบฟอร์ม
แบ็กคอลอื่นๆ อาจรวมถึงคอมโพเนนต์ Material ที่รองรับการย้อนกลับแบบคาดการณ์ ทรานซิชัน AndroidX ที่ใช้ Progress API หรือแบ็กคอลที่กำหนดเองอื่นๆ
การทำงานของคอลแบ็กของ childFragmentManager
จะทำงานหากคอลแบ็กข้างต้นถูกปิดใช้และกองซ้อนที่ย้อนกลับสำหรับ FragmentManager
นี้ไม่ว่างเปล่า โดยที่ childFragmentManager
แนบอยู่ใน Fregment ในตัวอย่างนี้ แคล็กแบ็กภายในนี้จะปิดอยู่
ในทำนองเดียวกัน Callback ภายในของ supportFragmentManager
จะทำงานหากปิดใช้ Callback ด้านบนและสแต็กไม่ว่างเปล่า ลักษณะการทำงานนี้มีความสอดคล้องกันเมื่อใช้ FragmentManager
หรือ NavigationComponent
เพื่อไปยังส่วนต่างๆ เนื่องจาก NavigationComponent
ต้องใช้ FragmentManager
ในตัวอย่างนี้ แคล็กแบ็กนี้จะทำงานหากผู้ใช้ไม่ได้ป้อนข้อความในแบบฟอร์ม ซึ่งทำให้แคล็กแบ็ก "คุณแน่ใจไหม..." ปิดอยู่
สุดท้าย super.onBackPressed()
คือ Callback ระดับระบบที่จะทำงานอีกครั้งหากปิดใช้ Callback ข้างต้น หากต้องการเรียกให้ภาพเคลื่อนไหวของระบบแสดง เช่น การกลับไปที่หน้าจอหลัก กิจกรรมข้ามแอป และงานข้ามแอป กองซ้อนของ supportFragmentManager
ต้องว่างเปล่าเพื่อให้การเรียกกลับภายในปิดอยู่
ทดสอบภาพเคลื่อนไหวของท่าทางสัมผัสการย้อนกลับแบบคาดเดา
หากยังใช้ Android 13 หรือ Android 14 อยู่ คุณจะทดสอบภาพเคลื่อนไหวของฟีเจอร์กลับไปที่หน้าแรกซึ่งแสดงในรูปที่ 1 ได้
หากต้องการทดสอบภาพเคลื่อนไหวนี้ ให้ทำตามขั้นตอนต่อไปนี้
ในอุปกรณ์ ให้ไปที่การตั้งค่า > ระบบ > ตัวเลือกสำหรับนักพัฒนาแอป
เลือกการเคลื่อนไหวย้อนกลับแบบคาดเดา
เปิดแอปที่อัปเดตแล้ว และใช้ท่าทางสัมผัสเพื่อดูการทํางาน