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

ลองใช้วิธีเขียน
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_DEFAULT

แอปส่วนใหญ่ใช้ 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() เพื่อลงทะเบียนและยกเลิกการลงทะเบียนการเรียกกลับเพื่อเริ่มต้น แอปของคุณใช้การเรียกกลับเหล่านี้เพื่อรอจนกว่า EmojiCompat จะเริ่มต้นก่อนที่จะประมวลผลอีโมจิในเธรดแบ็กกราวด์หรือในมุมมองที่กำหนดเอง

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

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

รองรับแบบอักษรที่รวมไว้กับ emoji2

คุณสามารถใช้อาร์ติแฟกต์ 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 เพื่อเก็บข้อมูลเมตาของอีโมจิ