কাস্টম WorkManager কনফিগারেশন ও ইনিশিয়ালাইজেশন

ডিফল্ট হিসেবে, আপনার অ্যাপ চালু হলে WorkManager অটোমেটিক নিজেকে কনফিগার করে, যাতে বেশিরভাগ অ্যাপের জন্য উপযুক্ত বিকল্প ব্যবহার করা যায়। WorkManager কীভাবে কাজ ম্যানেজ ও শিডিউল করে তার উপর আরও নিয়ন্ত্রণ চাইলে, আপনি নিজেই WorkManager শুরু করে WorkManager কনফিগারেশন কাস্টমাইজ করতে পারবেন।

চাহিদা মতো শুরু করা

অন-ডিমান্ড ইনিশিয়ালাইজেশন আপনাকে প্রতিবার অ্যাপ চালু করার পরিবর্তে শুধুমাত্র সেই কম্পোনেন্টের প্রয়োজন হলেই WorkManager তৈরি করতে দেয়। এটি করলে WorkManager আপনার ক্রিটিক্যাল স্টার্টআপ পাথ থেকে সরে যায়, যার ফলে অ্যাপ স্টার্টআপ পারফর্ম্যান্স উন্নত হয়। চাহিদা অনুযায়ী ইনিশিয়ালাইজেশন ব্যবহার করতে:

ডিফল্ট ইনিশিয়ালাইজার সরান

আপনার নিজস্ব কনফিগারেশন প্রদান করতে, আপনাকে প্রথমে ডিফল্ট ইনিশিয়ালাইজার সরাতে হবে। এটি করতে, tools:node="remove" মার্জ করার নিয়ম ব্যবহার করে AndroidManifest.xml আপডেট করুন।

WorkManager 2.6 থেকে, 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-এর ২.৬-এর থেকে পুরনো ভার্সন ব্যবহার করার সময়, 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() প্রয়োগের একটি উদাহরণ এখানে দেওয়া হল:

Kotlin

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 ইনিশিয়ালাইজ করতে পারবেন:

Kotlin

// 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 সিঙ্গলটনের ইনিশিয়ালাইজেশন Application.onCreate() অথবা ContentProvider.onCreate()-এ রান করছে কিনা তা নিশ্চিত করুন।

উপলভ্য কাস্টমাইজেশনের সম্পূর্ণ তালিকা দেখতে, Configuration.Builder() রেফারেন্স ডকুমেন্টেশন দেখুন।