รองรับอีโมจิสมัยใหม่

ลองใช้วิธีเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีรองรับอีโมจิในการเขียน

ชุดอีโมจิมาตรฐานมีการรีเฟรชทุกปีด้วย Unicode เนื่องจากการใช้อีโมจิเพิ่มขึ้นอย่างรวดเร็วสำหรับแอปทุกประเภท

หากแอปแสดงเนื้อหาอินเทอร์เน็ตหรือให้ป้อนข้อความ เราขอแนะนําอย่างยิ่งให้รองรับแบบอักษรอีโมจิล่าสุด มิเช่นนั้น อีโมจิที่ตามมาอาจแสดงเป็นสี่เหลี่ยมจัตุรัสเล็กๆ ที่เรียกว่า tofu (☐) หรือลำดับอีโมจิอื่นๆ ที่แสดงผลไม่ถูกต้อง

Android เวอร์ชัน 11 (API ระดับ 30) และต่ำกว่าอัปเดตแบบอักษรอีโมจิไม่ได้ ดังนั้นแอปที่แสดงอีโมจิในเวอร์ชันเหล่านั้นจึงต้องอัปเดตด้วยตนเอง

ตัวอย่างอีโมจิสมัยใหม่มีดังนี้

ตัวอย่าง เวอร์ชัน
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (กันยายน 2021)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 13.1 (กันยายน 2020)
🥲 🥷🏿 🐻‍❄️ 13.0 (มีนาคม 2020)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 12.1 (ตุลาคม 2019)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 12.0 (กุมภาพันธ์ 2019)

ไลบรารี androidx.emoji2:emoji2 ช่วยให้เข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันที่ต่ำกว่าได้ง่ายขึ้น ไลบรารี emoji2 เป็นสิ่งที่ต้องพึ่งพาของไลบรารี AppCompat และไม่ต้องกำหนดค่าเพิ่มเติมเพื่อให้ทำงานได้

การรองรับอีโมจิในเครื่องมือเขียน

BOM เดือนมีนาคม 2023 (Compose UI 1.4) รองรับอีโมจิเวอร์ชันล่าสุด รวมถึงใช้งานร่วมกับ Android เวอร์ชันเก่าได้จนถึง API 21 หน้านี้อธิบายวิธีกำหนดค่าอีโมจิสมัยใหม่ในระบบ View ดูข้อมูลเพิ่มเติมได้ที่หน้าอีโมจิในโหมดเขียน

สิ่งที่ต้องมีก่อน

หากต้องการยืนยันว่าแอปแสดงอีโมจิใหม่อย่างถูกต้อง ให้เปิดแอปในอุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) หรือต่ำกว่า หน้านี้มีอีโมจิสมัยใหม่ที่คุณแสดงเพื่อทดสอบได้

ใช้ AppCompat เพื่อรองรับอีโมจิล่าสุด

AppCompat 1.4 รองรับอีโมจิ

หากต้องการใช้AppCompatเพื่อรองรับอีโมจิ ให้ทำดังนี้

  1. ตรวจสอบว่าโมดูลของคุณใช้AppCompatไลบรารีเวอร์ชัน 1.4.0-alpha01 ขึ้นไป

    build.gradle
    
    // Ensure version is 1.4.0-alpha01 or higher.
    implementation "androidx.appcompat:appcompat.$appcompatVersion"
    
  2. ตรวจสอบว่ากิจกรรมทั้งหมดที่แสดงข้อความขยายคลาส AppCompatActivity

    Kotlin

    MyActivity.kt
    
    class MyActivity: AppCompatActivity {
    ...
    }

    Java

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
  3. ทดสอบการผสานรวมโดยเปิดแอปในอุปกรณ์ที่ใช้ Android 10 หรือต่ำกว่า และแสดงสตริงทดสอบต่อไปนี้ ตรวจสอบว่าตัวละครทั้งหมดแสดงผลอย่างถูกต้อง

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

แอปจะแสดงอีโมจิที่ใช้งานย้อนหลังได้ในอุปกรณ์ทั้งหมดที่มีผู้ให้บริการแบบดาวน์โหลดที่เข้ากันได้กับ emoji2 โดยอัตโนมัติ เช่น อุปกรณ์ที่ขับเคลื่อนโดยบริการ Google Play

หากแอปของคุณใช้ AppCompat แต่แสดง Tofu (☐)

ในบางกรณี แอปอาจแสดงเต้าหู้แทนอีโมจิที่เหมาะสม แม้ว่าคุณจะเพิ่มคลัง AppCompat แล้วก็ตาม คำอธิบายและวิธีแก้ปัญหาที่เป็นไปได้มีดังนี้

คุณเรียกใช้แอปในอุปกรณ์ที่เพิ่งแฟลชหรือโปรแกรมจำลองใหม่

ล้างข้อมูลบริการ Google Play ของแอปเพื่อล้างแคชแบบอักษรที่อาจเกิดขึ้นระหว่างการเริ่มต้น โดยปกติจะแก้ไขปัญหาได้หลังจากผ่านไป 2-3 ชั่วโมง

หากต้องการล้างข้อมูลแอป ให้ทำดังนี้

  1. เปิดการตั้งค่าในอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android

  2. แตะแอปและการแจ้งเตือน

  3. แตะดูแอปทั้งหมดหรือข้อมูลแอป

  4. เลื่อนดูแอปแล้วแตะบริการ Google Play

  5. แตะพื้นที่เก็บข้อมูลและแคช

  6. แตะล้างแคช

แอปของคุณไม่ได้ใช้คลาสที่เกี่ยวข้องกับข้อความของ AppCompat

กรณีนี้อาจเกิดขึ้นหากคุณไม่ได้ขยาย AppCompatActivity หรือสร้างอินสแตนซ์ของมุมมองในโค้ด เช่น TextView ตรวจสอบสิ่งต่อไปนี้

  • กิจกรรมขยายเวลา AppCompatActivity
  • หากสร้างมุมมองในโค้ด ให้ใช้AppCompat คลาสย่อยที่ถูกต้อง

AppCompatActivity จะเพิ่ม AppCompatTextView โดยอัตโนมัติแทน TextView เมื่อเพิ่ม XML คุณจึงไม่จำเป็นต้องอัปเดต XML

โทรศัพท์ที่ใช้ทดสอบไม่รองรับแบบอักษรที่ดาวน์โหลดได้

ตรวจสอบว่า DefaultEmojiCompatConfig.create แสดงผลการกำหนดค่าที่ไม่ใช่ค่าว่าง

โปรแกรมจำลองใน API ระดับก่อนหน้ายังไม่ได้อัปเกรดบริการ Google Play

เมื่อใช้โปรแกรมจำลองใน API ระดับก่อนหน้า คุณอาจต้องอัปเดตบริการ Google Play ที่รวมไว้สำหรับ emoji2 เพื่อค้นหาผู้ให้บริการแบบอักษร โดยให้เข้าสู่ระบบ Google Play Store ในโปรแกรมจำลอง

หากต้องการยืนยันว่าได้ติดตั้งเวอร์ชันที่เข้ากันได้แล้ว ให้ทำดังนี้

  1. เรียกใช้คำสั่งต่อไปนี้

    adb shell dumpsys package com.google.android.gms | grep version
    
  2. ตรวจสอบว่า versionCode สูงกว่า 211200000

รองรับอีโมจิโดยไม่ต้องใช้ AppCompat

หากแอปใส่ AppCompat ไม่ได้ แอปจะใช้ emoji2 ได้โดยตรง การดำเนินการนี้จะต้องมีขั้นตอนเพิ่มเติม ดังนั้นให้ใช้วิธีนี้เฉพาะเมื่อแอปใช้ AppCompat ไม่ได้เท่านั้น

หากต้องการรองรับอีโมจิโดยไม่ต้องใช้ไลบรารี AppCompat ให้ทําดังนี้

  1. ในไฟล์ build.gradle ของแอป ให้ใส่ emoji2 และ emoji2-views

    build.gradle
    
    def emojiVersion = "1.0.0-alpha03"
    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-views:$emojiVersion"
    

    โมดูล emoji2-views มีคลาสย่อยของ TextView, Button และ EditText ที่ใช้ EmojiCompat อย่าใช้ AppCompat ในแอปที่มี AppCompat เนื่องจากแอปดังกล่าวใช้ EmojiCompat อยู่แล้ว

  2. ใน XML และโค้ด ไม่ว่าคุณจะใช้ TextView, EditText หรือ Button ให้ใช้ EmojiTextView, EmojiEditText หรือ EmojiButton แทน

    activity_main.xml
    
    <androidx.emoji2.widget.EmojiTextView ... />
    <androidx.emoji2.widget.EmojiEditText ... />
    <androidx.emoji2.widget.EmojiButton ... />
    

    เมื่อรวมข้อบังคับของ emoji2 ไว้ด้วย ระบบจะใช้ผู้ให้บริการแบบดาวน์โหลดได้เริ่มต้นเพื่อโหลดแบบอักษรอีโมจิโดยอัตโนมัติไม่นานหลังจากเปิดแอป ไม่จำเป็นต้องมีการกำหนดค่าเพิ่มเติม

  3. หากต้องการทดสอบการผสานรวม ให้เปิดแอปในอุปกรณ์ที่ใช้ Android 11 ลงมาและแสดงสตริงทดสอบต่อไปนี้ ตรวจสอบว่าตัวละครทั้งหมดแสดงผลอย่างถูกต้อง

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼 🤝 👩🏻

ใช้ EmojiCompat โดยไม่ใช้วิดเจ็ต

EmojiCompat ใช้ EmojiSpan เพื่อแสดงภาพที่ถูกต้อง ดังนั้นจึงต้องแปลงออบเจ็กต์ CharSequence หนึ่งๆ ให้เป็นออบเจ็กต์ Spanned ที่มีออบเจ็กต์ EmojiSpan คลาส EmojiCompat มีเมธอด process() สำหรับแปลง CharSequences เป็นอินสแตนซ์ Spanned เมื่อใช้วิธีนี้ คุณจะเรียกใช้ process() ในเบื้องหลังและแคชผลลัพธ์ได้ ซึ่งจะช่วยปรับปรุงประสิทธิภาพของแอป

Kotlin

val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")

Java

CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");

ใช้ EmojiCompat สำหรับตัวแก้ไขวิธีการป้อนข้อมูล

คลาส EmojiCompat ช่วยให้แป้นพิมพ์แสดงผลอีโมจิที่แอปที่โต้ตอบอยู่รองรับ เครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) สามารถใช้เมธอด getEmojiMatch() เพื่อตรวจสอบว่าอินสแตนซ์ของ EmojiCompat แสดงผลอีโมจิได้หรือไม่ เมธอดนี้จะรับ CharSequence ของอีโมจิและแสดงผล true หาก EmojiCompat ตรวจหาและแสดงผลอีโมจิได้

แป้นพิมพ์ยังสามารถตรวจสอบเวอร์ชันของ EmojiCompat ที่แอปรองรับได้เพื่อกำหนดอีโมจิที่จะแสดงในจานสี หากต้องการตรวจสอบเวอร์ชัน แป้นพิมพ์จะค้นหาคีย์ต่อไปนี้ในแพ็กเกจ EditorInfo.extras ได้ (หากมี)

  • EDITOR_INFO_METAVERSION_KEY: แสดงเวอร์ชันของข้อมูลเมตาอีโมจิที่แอปใช้ หากไม่มีคีย์นี้ แอปจะไม่ใช้ EmojiCompat
  • EDITOR_INFO_REPLACE_ALL_KEY: หากมีคีย์และตั้งค่าเป็น true แอปจะกำหนดค่า EmojiCompat ให้แทนที่อีโมจิทั้งหมด แม้ว่าจะมีอยู่ในระบบก็ตาม

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกําหนดค่าอินสแตนซ์ของ EmojiCompat

ใช้อีโมจิในมุมมองที่กำหนดเอง

หากแอปมีมุมมองที่กําหนดเองซึ่งเป็นคลาสย่อยโดยตรงหรือโดยอ้อมของ TextView เช่น Button, Switch หรือ EditText และมุมมองเหล่านั้นแสดงเนื้อหาที่ผู้ใช้สร้างขึ้นได้ มุมมองแต่ละรายการต้องใช้ EmojiCompat

กระบวนการจะแตกต่างกันไปตามที่แอปใช้ไลบรารี AppCompat หรือไม่

เพิ่มมุมมองที่กำหนดเองสำหรับแอปด้วย AppCompat

หากแอปใช้ AppCompat ให้ขยายการใช้งาน AppCompat แทนการใช้งานแพลตฟอร์ม ใช้ตารางต่อไปนี้เป็นแนวทางในการเพิ่มยอดดูใน AppCompat

แทนที่จะขยาย... ขยาย
TextView AppCompatTextView
EditText AppCompatEditText
ToggleButton AppCompatToggleButton
Switch SwitchCompat
Button AppCompatButton
CheckedTextView AppCompatCheckedTextView
RadioButton AppCompatRadioButton
CheckBox AppCompatCheckBox
AutoCompleteTextView AppCompatAutoCompleteTextView
MultiAutoCompleteTextView AppCompatMultiAutoCompleteTextView

เพิ่มมุมมองที่กำหนดเองสำหรับแอปที่ไม่มี AppCompat

หากแอปไม่ได้ใช้ AppCompat ให้ใช้ตัวช่วยการผสานรวมมุมมองในข้อบังคับของ emoji2-views-helper ที่ออกแบบมาเพื่อใช้ในมุมมองที่กำหนดเอง รายการเหล่านี้เป็นเครื่องมือช่วยที่ไลบรารี AppCompat ใช้เพื่อรองรับอีโมจิ

ทําตามขั้นตอนต่อไปนี้เพื่อรองรับมุมมองที่กําหนดเองสําหรับแอปที่ไม่ได้ใช้ AppCompat

  1. เพิ่มไลบรารี emoji2-views-helper:

    implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
    
  2. ทำตามวิธีการเพื่อรวม EmojiTextViewHelper หรือ EmojiEditTextHelper ในมุมมองที่กำหนดเองของแอป

  3. ทดสอบการผสานรวมโดยเปิดแอปในอุปกรณ์ที่ใช้ Android 10 หรือต่ำกว่า และแสดงสตริงทดสอบต่อไปนี้ ตรวจสอบว่าอักขระทั้งหมดแสดงผลอย่างถูกต้อง

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

ฟีเจอร์เสริมสำหรับการจัดการอีโมจิ2

หลังจากรวมไลบรารี emoji2 ไว้ในแอปแล้ว คุณจะเพิ่มฟีเจอร์ที่ไม่บังคับตามที่อธิบายไว้ในส่วนนี้ได้

กำหนดค่า emoji2 ให้ใช้แบบอักษรอื่นหรือผู้ให้บริการแบบอักษรที่ดาวน์โหลดได้

หากต้องการกำหนดค่า emoji2 ให้ใช้แบบอักษรหรือผู้ให้บริการแบบอักษรที่ดาวน์โหลดได้แบบอื่น ให้ทำดังนี้

  1. ปิดใช้ EmojiCompatInitializer โดยเพิ่มข้อมูลต่อไปนี้ลงในไฟล์ Manifest

    <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    android:exported="false"
    tools:node="merge">
    <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer"
               tools:node="remove" />
    </provider>
  2. ทำสิ่งใดสิ่งหนึ่งต่อไปนี้

    • ใช้การกําหนดค่าเริ่มต้นโดยเรียกใช้ DefaultEmojiCompatConfiguration.create(context)

    • สร้างการกำหนดค่าของคุณเองเพื่อโหลดแบบอักษรจากแหล่งที่มาอื่นโดยใช้ EmojiCompat.Config คลาสนี้มีตัวเลือกหลายอย่างในการแก้ไขลักษณะการทํางานของ EmojiCompat ตามที่อธิบายไว้ในส่วนต่อไปนี้

แก้ไขลักษณะการทํางานของ EmojiCompat

คุณสามารถใช้อินสแตนซ์ของ EmojiCompat.Config เพื่อแก้ไขลักษณะการทํางานของ EmojiCompat ได้

ตัวเลือกการกําหนดค่าที่สําคัญที่สุดคือ setMetadataLoadStrategy() ซึ่งควบคุมเวลาที่ EmojiCompat จะโหลดแบบอักษร การโหลดแบบอักษรจะเริ่มขึ้นทันทีที่มีการเรียกใช้ EmojiCompat.load() ซึ่งจะทริกเกอร์การดาวน์โหลดที่จำเป็น ระบบจะสร้างชุดข้อความสำหรับการดาวน์โหลดแบบอักษร เว้นแต่ว่าแอปของคุณจะมีชุดข้อความอยู่แล้ว

LOAD_STRATEGY_MANUAL ช่วยให้คุณควบคุมได้เมื่อเรียกใช้ EmojiCompat.load() และทำให้ระบบเริ่มโหลดแบบซิงค์กันในการเรียกใช้ EmojiCompat.init()

แอปส่วนใหญ่ใช้ LOAD_STRATEGY_MANUAL เพื่อให้ควบคุมชุดข้อความและเวลาในการโหลดแบบอักษรได้ แอปของคุณต้องเลื่อนเวลาไว้จนกว่าหน้าจอแรกจะแสดงเพื่อหลีกเลี่ยงเวลาในการตอบสนองที่เพิ่มขึ้นเมื่อเริ่มต้น EmojiCompatInitializer ทำตามแนวทางปฏิบัตินี้และเลื่อนเวลาโหลดแบบอักษรอีโมจิออกไปจนกว่าหน้าจอแรกจะกลับมาทำงานอีกครั้ง

ใช้เมธอดต่อไปนี้จากคลาสพื้นฐานเพื่อตั้งค่าด้านอื่นๆ ของการกําหนดค่า

  • setReplaceAll(): กำหนดว่า EmojiCompat จะแทนที่อีโมจิทั้งหมดที่พบด้วย EmojiSpan หรือไม่ โดยค่าเริ่มต้น เมื่อ EmojiCompat อนุมานว่าระบบแสดงผลอีโมจิได้ ระบบจะไม่แทนที่อีโมจินั้น เมื่อตั้งค่าเป็น true EmojiCompat จะแทนที่อีโมจิทั้งหมดด้วยออบเจ็กต์ EmojiSpan
  • setEmojiSpanIndicatorEnabled(): ระบุว่า EmojiCompat จะแทนที่อีโมจิด้วยออบเจ็กต์ EmojiSpan หรือไม่ เมื่อตั้งค่าเป็น true EmojiCompat จะวาดพื้นหลังสำหรับ EmojiSpan วิธีการนี้มักใช้สำหรับการแก้ไขข้อบกพร่องเป็นหลัก
  • setEmojiSpanIndicatorColor: กำหนดสีเพื่อระบุ EmojiSpan ค่าเริ่มต้นคือ GREEN
  • registerInitCallback(): แจ้งสถานะการเริ่มต้นEmojiCompatให้แอปทราบ

เพิ่มตัวรับฟังการเริ่มต้น

คลาส EmojiCompat และ EmojiCompat.Config จะมีเมธอด registerInitCallback() และ unregisterInitCallback() สำหรับลงทะเบียนและยกเลิกการลงทะเบียน Callback ของการเริ่มต้น แอปของคุณใช้ Callback เหล่านี้เพื่อรอจนกว่า EmojiCompat จะเริ่มทำงาน คุณจึงจะประมวลผลอีโมจิบนชุดข้อความในเบื้องหลังหรือในมุมมองที่กำหนดเอง

หากต้องการใช้เมธอดเหล่านี้ ให้สร้างอินสแตนซ์ของคลาส EmojiCompat.InitCallback เรียกใช้เมธอดเหล่านี้และส่งผ่านอินสแตนซ์ของคลาส EmojiCompat.InitCallback เมื่อเริ่มต้นใช้งานสำเร็จแล้ว คลาส EmojiCompat จะเรียกใช้เมธอด onInitialized() หากไลบรารีเริ่มต้นไม่สำเร็จ คลาส EmojiCompat จะเรียกใช้เมธอด onFailed()

หากต้องการตรวจสอบสถานะการเริ่มต้นได้ทุกเมื่อ ให้เรียกใช้เมธอด getLoadState() เมธอดนี้จะแสดงผลค่าใดค่าหนึ่งต่อไปนี้ LOAD_STATE_LOADING, LOAD_STATE_SUCCEEDED หรือ LOAD_STATE_FAILED

รองรับแบบอักษรที่มาพร้อมอีโมจิ2

คุณใช้อาร์ติแฟกต์ emoji2-bundled เพื่อรวมแบบอักษรอีโมจิในแอปได้ แต่เนื่องจากแบบอักษร NotoColorEmoji มีขนาดเกิน 10 MB เราขอแนะนำเป็นอย่างยิ่งให้แอปใช้แบบอักษรที่ดาวน์โหลดได้เมื่อเป็นไปได้ ออบเจ็กต์ emoji2-bundled มีไว้สำหรับแอปในอุปกรณ์ที่ไม่รองรับแบบอักษรที่ดาวน์โหลดได้

หากต้องการใช้อาร์ติแฟกต์ emoji2-bundled ให้ทําดังนี้

  1. รวมอาร์ติแฟกต์ emoji2-bundled และ emoji2:

    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
    
  2. กำหนดค่า emoji2 ให้ใช้การกำหนดค่าที่รวมไว้โดยทำดังนี้

    Kotlin

    EmojiCompat.init(BundledEmojiCompatConfig(context))

    Java

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
  3. ทดสอบการผสานรวมโดยทําตามขั้นตอนก่อนหน้าสําหรับการรวม emojicompat ไม่ว่าจะมีหรือไม่มี AppCompat ตรวจสอบว่าสตริงทดสอบแสดงอย่างถูกต้อง

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻 🦰, 🧑🏿 🦯, 👩🏻 🤝 👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼 🤝 👩🏻

ผลกระทบของการกำหนดค่า EmojiCompat อัตโนมัติ

ระบบจะใช้การกำหนดค่าเริ่มต้นโดยใช้ไลบรารีเริ่มต้น EmojiCompatInitializer และ DefaultEmojiCompatConfig

หลังจากกิจกรรมแรกกลับมาทำงานในแอปแล้ว ตัวเริ่มต้นจะกำหนดเวลาการโหลดแบบอักษรอีโมจิ ความล่าช้าสั้นๆ นี้ช่วยให้แอปแสดงเนื้อหาเริ่มต้นได้โดยไม่เกิดความล่าช้าที่อาจเกิดขึ้นเนื่องจากการโหลดแบบอักษรในเธรดเบื้องหลัง

DefaultEmojiCompatConfig จะค้นหาผู้ให้บริการแบบดาวน์โหลดได้ซึ่งติดตั้งในระบบและใช้อินเทอร์เฟซ EmojiCompat เช่น บริการของ Google Play ในอุปกรณ์ที่ขับเคลื่อนโดยบริการ Google Play การดำเนินการนี้จะโหลดแบบอักษรโดยใช้บริการ Google Play

โปรแกรมเริ่มต้นสร้างชุดข้อความเบื้องหลังเพื่อโหลดแบบอักษรอีโมจิ และการดาวน์โหลดแบบอักษรอาจใช้เวลาถึง 10 วินาทีก่อนที่จะหมดเวลา หลังจากดาวน์โหลดแบบอักษรแล้ว ระบบจะใช้เวลาประมาณ 150 มิลลิวินาทีในเธรดเบื้องหลังเพื่อเริ่มต้น EmojiCompat

เลื่อนการเริ่มต้น EmojiCompat ออกไป แม้ว่าคุณจะปิดใช้ EmojiCompatInitializer แล้วก็ตาม หากคุณกําหนดค่าด้วยตนเอง EmojiCompat ให้เรียกใช้ EmojiCompat.load() หลังจากที่แสดงหน้าจอแรกของแอปเพื่อหลีกเลี่ยงการแย่งกันแสดงในเบื้องหลังกับการโหลดหน้าจอแรก

หลังจากโหลด EmojiCompat จะใช้ RAM ประมาณ 300 KB เพื่อเก็บข้อมูลเมตาของอีโมจิ