การกำหนดค่าและการเริ่มต้น WorkManager ที่กำหนดเอง

โดยค่าเริ่มต้น WorkManager จะกำหนดค่าตัวเองโดยอัตโนมัติเมื่อแอปเริ่มทำงาน โดยใช้ตัวเลือกที่สมเหตุสมผล ซึ่งเหมาะกับแอปส่วนใหญ่ หากคุณต้องการเพิ่ม ควบคุมวิธีจัดการและกำหนดเวลาของ WorkManager โดยคุณสามารถปรับแต่ง กำหนดค่า WorkManager ด้วยการเริ่มต้น WorkManager ด้วยตนเอง

การเริ่มต้นแบบออนดีมานด์

การเริ่มต้นแบบออนดีมานด์ช่วยให้คุณสร้าง WorkManager ได้ก็ต่อเมื่อคอมโพเนนต์นั้นอยู่ที่ แทนทุกครั้งที่แอปเริ่มทำงาน การดำเนินการนี้จะเป็นการปิด WorkManager เส้นทางการเริ่มต้นใช้งานที่สำคัญของคุณ ซึ่งช่วยปรับปรุงประสิทธิภาพการเริ่มต้นแอป เพื่อใช้งานแบบออนดีมานด์ การเริ่มต้น:

นำค่าเริ่มต้นเริ่มต้นออก

หากต้องการกําหนดค่าของคุณเอง คุณต้องนําค่าเริ่มต้นออกก่อน โปรแกรมเริ่มต้น ซึ่งทำได้โดยอัปเดต AndroidManifest.xml โดยใช้กฎการผสาน tools:node="remove"

ตั้งแต่ WorkManager 2.6 มีการใช้ App Startup ภายใน WorkManager ภายใน หากต้องการระบุการเริ่มต้นที่กำหนดเอง คุณต้องทำดังนี้ นำโหนด androidx.startup ออก

หากคุณไม่ได้ใช้ App Startup ในแอป คุณสามารถนำออกไปเลยได้

 <!-- If you want to disable android.startup completely. -->
 <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    tools:node="remove">
 </provider>

มิฉะนั้น ให้นำเฉพาะโหนด WorkManagerInitializer ออก

 <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    android:exported="false"
    tools:node="merge">
    <!-- If you are using androidx.startup to initialize other components -->
    <meta-data
        android:name="androidx.work.WorkManagerInitializer"
        android:value="androidx.startup"
        tools:node="remove" />
 </provider>

หากใช้ WorkManager เวอร์ชันที่เก่ากว่า 2.6 ให้นำออก workmanager-init แทน:

<provider
    android:name="androidx.work.impl.WorkManagerInitializer"
    android:authorities="${applicationId}.workmanager-init"
    tools:node="remove" />

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้กฎการผสานในไฟล์ Manifest โปรดดูเอกสารเกี่ยวกับ ผสานไฟล์ Manifest หลายไฟล์

ใช้ Configuration.Provider

ให้ชั้นเรียน Application ใช้ Configuration.Provider อินเทอร์เฟซ และแสดงการติดตั้ง Configuration.Provider.getWorkManagerConfiguration เมื่อต้องใช้ WorkManager โปรดเรียกใช้เมธอด WorkManager.getInstance(Context) WorkManager เรียกเมธอด getWorkManagerConfiguration() ที่กำหนดเองของแอปไปยัง ค้นพบ Configuration (คุณไม่จำเป็นต้องโทร WorkManager.initialize ด้วยตัวคุณเอง)

ต่อไปนี้คือตัวอย่างการใช้งาน getWorkManagerConfiguration() ที่กำหนดเอง

Kotlin

class MyApplication() : Application(), Configuration.Provider {
     override fun getWorkManagerConfiguration() =
           Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.INFO)
                .build()
}

Java

class MyApplication extends Application implements Configuration.Provider {
    @Override
    public Configuration getWorkManagerConfiguration() {
        return new Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.INFO)
                .build();
    }
}

การเริ่มต้นที่กำหนดเองก่อน WorkManager 2.1.0

สำหรับ WorkManager เวอร์ชันก่อนเวอร์ชัน 2.1.0 จะมีการเริ่มต้น 2 แบบ ตัวเลือก ในกรณีส่วนใหญ่ พารามิเตอร์ การเริ่มต้นเริ่มต้น คือสิ่งที่คุณต้องการ หากต้องการควบคุม WorkManager ให้แม่นยำยิ่งขึ้น คุณสามารถทำสิ่งต่อไปนี้ได้ ระบุการกำหนดค่าของคุณเอง

การเริ่มต้นเริ่มต้น

WorkManager ใช้ ContentProvider ที่กำหนดเองเพื่อเริ่มต้นตัวเองเมื่อแอปของคุณ เริ่ม โค้ดนี้อยู่ในชั้นเรียนภายใน androidx.work.impl.WorkManagerInitializerและใช้ค่าเริ่มต้น Configuration ระบบจะใช้เครื่องมือเริ่มต้นเริ่มต้นโดยอัตโนมัติ เว้นแต่คุณจะ ปิดใช้อย่างชัดแจ้ง เงื่อนไขเริ่มต้นเริ่มต้นเหมาะกับแอปส่วนใหญ่

การเริ่มต้นที่กำหนดเอง

หากต้องการควบคุมกระบวนการเริ่มต้น คุณต้อง ปิดใช้ค่าเริ่มต้นเริ่มต้น จากนั้นให้กำหนดค่าที่กำหนดเอง

เมื่อนําค่าเริ่มต้นเริ่มต้นออกแล้ว คุณจะเริ่มต้นด้วยตนเองได้ WorkManager:

Kotlin

// provide custom configuration
val myConfig = Configuration.Builder()
    .setMinimumLoggingLevel(android.util.Log.INFO)
    .build()

// initialize WorkManager
WorkManager.initialize(this, myConfig)

Java

// provide custom configuration
Configuration myConfig = new Configuration.Builder()
    .setMinimumLoggingLevel(android.util.Log.INFO)
    .build();

//initialize WorkManager
WorkManager.initialize(this, myConfig);

ตรวจสอบว่าการเริ่มต้น WorkManager Singleton ที่วิ่งใน Application.onCreate() หรือใน ContentProvider.onCreate()

ดูรายการการกำหนดค่าทั้งหมดที่มีให้บริการที่ Configuration.Builder() เอกสารอ้างอิง