پیکربندی و مقداردهی اولیه WorkManager سفارشی

به‌طور پیش‌فرض، WorkManager با استفاده از گزینه‌های معقولی که برای اکثر برنامه‌ها مناسب است، خود را به‌طور خودکار هنگام شروع برنامه پیکربندی می‌کند. اگر به کنترل بیشتری بر نحوه مدیریت و زمان‌بندی کار WorkManager نیاز دارید، می‌توانید با مقداردهی اولیه WorkManager خودتان، پیکربندی WorkManager را سفارشی کنید.

اولیه سازی بر اساس تقاضا

مقداردهی اولیه برحسب تقاضا به شما امکان می دهد به جای هر بار راه اندازی برنامه، WorkManager را تنها زمانی ایجاد کنید که آن مؤلفه مورد نیاز است. با انجام این کار، WorkManager از مسیر حیاتی راه‌اندازی شما خارج می‌شود و عملکرد راه‌اندازی اپلیکیشن را بهبود می‌بخشد. برای استفاده از مقداردهی اولیه برحسب تقاضا:

مقدار اولیه اولیه را حذف کنید

برای ارائه پیکربندی خود، ابتدا باید مقداردهی اولیه پیش فرض را حذف کنید. برای انجام این کار، AndroidManifest.xml با استفاده از merge rule 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" />

برای کسب اطلاعات بیشتر در مورد استفاده از قوانین ادغام در مانیفست خود، به مستندات مربوط به ادغام چندین فایل مانیفست مراجعه کنید.

پیاده سازی Configuration.Provider

از کلاس Application خود بخواهید رابط Configuration.Provider را پیاده سازی کند و پیاده سازی خود را از Configuration.Provider.getWorkManagerConfiguration ارائه دهد. هنگامی که نیاز به استفاده از WorkManager دارید، مطمئن شوید که متد WorkManager.getInstance(Context) فراخوانی کنید. WorkManager متد سفارشی getWorkManagerConfiguration() برنامه شما را برای کشف Configuration آن فراخوانی می‌کند. (نیازی ندارید خودتان با WorkManager.initialize تماس بگیرید.)

در اینجا نمونه ای از پیاده سازی سفارشی getWorkManagerConfiguration() آورده شده است:

کاتلین

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

جاوا

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، دو گزینه مقداردهی اولیه وجود دارد. در بیشتر موارد، مقداردهی اولیه اولیه تنها چیزی است که نیاز دارید. برای کنترل دقیق‌تر WorkManager، می‌توانید پیکربندی خود را مشخص کنید .

مقداردهی اولیه پیش فرض

WorkManager از یک ContentProvider سفارشی استفاده می کند تا هنگام شروع برنامه شما، خود را مقداردهی اولیه کند. این کد در کلاس داخلی androidx.work.impl.WorkManagerInitializer زندگی می کند و از Configuration پیش فرض استفاده می کند. مقداردهی اولیه پیش فرض به طور خودکار استفاده می شود مگر اینکه به صراحت آن را غیرفعال کنید. آغازگر پیش فرض برای اکثر برنامه ها مناسب است.

مقداردهی اولیه سفارشی

اگر می‌خواهید فرآیند مقداردهی اولیه را کنترل کنید، باید اولیه‌ساز پیش‌فرض را غیرفعال کنید ، سپس پیکربندی سفارشی خود را تعریف کنید.

پس از حذف اولیه ساز پیش فرض، می توانید به صورت دستی WorkManager را مقداردهی اولیه کنید:

کاتلین

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

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

جاوا

// 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() مراجعه کنید.