بهطور پیشفرض، 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()
مراجعه کنید.