แก้ไขข้อบกพร่องของภาพเคลื่อนไหวที่กระตุก
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ปัญหาที่ยากที่สุดอย่างหนึ่งสำหรับนักพัฒนาแอปคือการทำให้ภาพเคลื่อนไหวราบรื่น ไม่กระตุก และไม่มีจุดสะดุด ซึ่งจะแก้ไขได้ยากมากเมื่อระบบดําเนินการงานเบื้องหลังที่ต้องใช้ทรัพยากรมากด้วย ไม่มีการระบุง่ายๆ ว่าความกระตุกเกิดจากแอปหรือระบบ อย่างไรก็ตาม มีเครื่องมือโปรไฟล์ที่จะช่วยคุณระบุแหล่งที่มาที่เป็นไปได้ของลักษณะการทำงานที่ไม่ถูกต้อง
แสดงผลใน ChromeOS
แอปที่ได้รับการปรับแต่งอย่างละเอียด เช่น เกม มักจะใช้บัฟเฟอร์คู่เพื่อให้เวลาในการตอบสนองของผู้ใช้ต่ำที่สุด อย่างไรก็ตาม ยังมีอีกหลายอย่างที่อาจทําให้ประสิทธิภาพลดลง ตัวอย่างเช่น หากการแสดงผลเฟรมใช้เวลานานเกินไป ผลลัพธ์ที่แสดงผลจะไม่พร้อมสำหรับการสลับบัฟเฟอร์ถัดไป และเฟรมก่อนหน้าก็จะแสดงซ้ำ
จากนั้นโปรแกรมแสดงผลจะไม่สามารถเริ่มแสดงผลเฟรมถัดไปได้ ซึ่งจะทำให้เกิดปัญหามากขึ้น สถานการณ์นี้เป็นสิ่งที่นักพัฒนาแอป Android บนอุปกรณ์เคลื่อนที่คุ้นเคย เมื่อแอปทำงานบน ChromeOS บริบทจะซับซ้อนมากขึ้น
แอปที่ทำงานบนเดสก์ท็อปจะไม่แสดงผลในเฟรมการแสดงผลของหน้าจอโดยตรง แต่ระบบจะแสดงผลข้อมูลเป็นพื้นผิวแทน โดยปกติแล้วจะมีแอปหลายแอป ซึ่งแต่ละแอปจะแสดงผลกราฟิกเป็นพื้นผิว ระบบจะสร้างมุมมองบนหน้าจอโดยใช้โปรแกรมคอมโพสิเตอร์เพื่อรวมพื้นผิวทั้งหมดให้เป็นรูปภาพเดสก์ท็อปรูปเดียว
คอมโพสเซอร์จะทำงานอย่างมีประสิทธิภาพในเบื้องหลัง อย่างไรก็ตาม จะใช้การหน่วงเวลา 1 เฟรมเพื่อใช้ไปป์ไลน์ GPU ให้ได้สูงสุด ในทางทฤษฎีแล้ว คุณอาจไม่จําเป็นต้องใช้วิธีนี้ แต่วิธีนี้จะช่วยลดความผันผวนของประสิทธิภาพของระบบและช่วยปรับสมดุลการโหลดที่ไม่สมมาตร
เมื่อระบบปฏิบัติการทำงานอย่างหนัก GPU อาจทำงานหนักตามไปด้วย อาจมีเวลาหน่วงตั้งแต่เวลาที่เฟรมแสดงผลจนกว่าเฟรมจะปรากฏบนหน้าจอ ระบบอาจใช้บัฟเฟอร์ 4 ชั้นเพื่อชดเชย ทั้งนี้ขึ้นอยู่กับฮาร์ดแวร์ แม้ว่าจะมีการบัฟเฟอร์มากขึ้น แต่ไปป์ไลน์กราฟิกก็อาจยังกระตุกได้
เครื่องมือติดตามกราฟิก ARC
ChromeOS มีเครื่องมือโปรไฟล์ที่แสดงวิธีที่บัฟเฟอร์ทำงานในระบบ เมื่อมีการแลกเปลี่ยนหน่วยความจำ ระดับการทํางานของ CPU/GPU และแอปพลิเคชันของคุณกําลังทําอะไรอยู่ ณ เวลาหนึ่งๆ ดังที่แสดงในภาพต่อไปนี้

ตั้งค่าโปรแกรมวิเคราะห์
หากต้องการใช้เครื่องมือวิเคราะห์ คุณต้องใช้งาน M75 ขึ้นไป
ใช้อุปกรณ์ Intel เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
ก่อนใช้เครื่องมือวิเคราะห์ ให้สร้างข้อมูลเทมเพลตของแอปด้วยร่องรอย
เพิ่ม Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>);
ลงในโค้ดตรงที่ต้องการใส่การติดตาม ใช้ Event
ที่ขึ้นต้นด้วยคำนำหน้า customTrace
โดยที่คำนำหน้าจะไม่ปรากฏในข้อความการติดตาม
หากต้องการตั้งค่าโปรแกรมวิเคราะห์ ให้ทำตามขั้นตอนต่อไปนี้
- เปิดโหมดนักพัฒนาซอฟต์แวร์
- เปิดการตั้งค่า Chrome และเปิดใช้เครื่องมือแสดงภาพบัฟเฟอร์กราฟิก ARC
- ไปที่
chrome://arc-graphics-tracing
เรียกใช้เครื่องมือวิเคราะห์
- เลือกหยุดเมื่อกระตุก
- เรียกใช้แอป Android
- เมื่อแอป Android ทำงานอยู่และมีโฟกัส ให้กด Control+Shift+G
เมื่อเกิดความกระตุก หน้าต่างเบราว์เซอร์จะปรากฏขึ้น
ใช้แป้น W และ S เพื่อซูมเข้าและออกไทม์ไลน์
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Debug animation jank\n\nOne of the most difficult problems for app developers is\nensuring smooth, glitchless, and jank-free animation. This is especially hard to\ndebug when the system is also performing resource-intensive background\ntasks. There is no easy way to determine whether some jank is caused by your app or\nthe system. However, there is a profiler tool that can help you identify the\npossible source of the bad behavior.\n\nRender on ChromeOS\n------------------\n\nA fine-tuned app, like a game, usually uses double buffering to keep the user\nresponse time as low as possible. Still, there are many things that can degrade\nperformance. For example, if rendering a frame takes too long, the rendered\nresult is not ready for the next buffer swap, and consequently the previous\nframe repeats.\n\nThen, the renderer can't start rendering the next frame,\ncausing even more problems. This scenario is familiar to Android mobile\ndevelopers; when an app runs on ChromeOS, the context is even more complicated.\n\nAn app running on the desktop doesn't render directly to the screen's display\nframe. It renders its data into a texture instead. There are usually multiple\napps, each rendering its graphics into a texture. The system constructs the view\non the screen using a compositor to combine all the textures into a single\ndesktop image.\n\nThe compositor works transparently in the background. However, it introduces a\none-frame time delay to maximize the use of the GPU pipeline. In an ideal\nworld this might not be necessary, but it smooths system performance\nfluctuations and helps balance an asymmetrical load.\n\nWhen the OS is working very hard, the GPU might get squeezed. There can be a\ndelay from the time a frame renders to when it appears on the\nscreen. Depending on the hardware, the system might use quadruple buffering to\ncompensate. Even with deeper buffering, the graphic pipeline can still glitch.\n\nThe ARC graphics tracer\n-----------------------\n\nChromeOS has a profiling tool that shows how the buffers are percolating\nthrough the system, when memory swaps occur, how busy the CPU/GPU is, and what\nyour application is doing at a given time, shown in the following image:\n\n### Set up the profiler\n\nTo use the profiler, you must run M75 or later.\nFor best results, use an Intel device.\n\nBefore using the profiler, seed your app with traces.\nAdd `Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, \"Event\", \u003cnumber\u003e);` to your code\nwherever you'd like to include a trace. Use an `Event` that begins with\nthe prefix `customTrace`. The prefix doesn't appear in the trace message.\n\nTo set up the profiler, follow these steps:\n\n1. Turn on developer mode.\n2. Turn on Chrome settings and enable the **ARC graphic buffers visualization tool**.\n3. Navigate to `chrome://arc-graphics-tracing`.\n\n### Run the profiler\n\n1. Select **stop on jank**.\n2. Run the Android app.\n3. When the Android app is active and has focus, press \u003ckbd\u003eControl\u003c/kbd\u003e+\u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eG\u003c/kbd\u003e.\n\nWhen some jank happens, a browser window pops up.\nUse the \u003ckbd\u003eW\u003c/kbd\u003e and \u003ckbd\u003eS\u003c/kbd\u003e keys to zoom and shrink the timeline."]]