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

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

অন-ডিমান্ড ইনিশিয়ালাইজেশন

অন-ডিমান্ড ইনিশিয়ালাইজেশন আপনাকে ওয়ার্ক ম্যানেজার তৈরি করতে দেয় যখন সেই উপাদানটির প্রয়োজন হয়, প্রতিবার অ্যাপটি শুরু হওয়ার পরিবর্তে। এটি করা ওয়ার্ক ম্যানেজারকে আপনার গুরুত্বপূর্ণ স্টার্টআপ পথ থেকে সরিয়ে দেয়, অ্যাপ স্টার্টআপ কর্মক্ষমতা উন্নত করে। অন-ডিমান্ড ইনিশিয়ালাইজেশন ব্যবহার করতে:

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

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

WorkManager 2.6 থেকে, App Startup WorkManager-এর মধ্যে অভ্যন্তরীণভাবে ব্যবহৃত হয়। একটি কাস্টম ইনিশিয়ালাইজার প্রদান করতে আপনাকে androidx.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 এর আগে কাস্টম আরম্ভ করা

2.1.0 সংস্করণের আগে WorkManager-এর সংস্করণগুলির জন্য, দুটি আরম্ভ করার বিকল্প রয়েছে। বেশিরভাগ ক্ষেত্রে, ডিফল্ট আরম্ভই আপনার প্রয়োজন। WorkManager-এর আরও সুনির্দিষ্ট নিয়ন্ত্রণের জন্য, আপনি আপনার নিজস্ব কনফিগারেশন নির্দিষ্ট করতে পারেন।

ডিফল্ট আরম্ভ

WorkManager একটি কাস্টম ContentProvider ব্যবহার করে যখন আপনার অ্যাপ শুরু হয় তখন নিজেকে আরম্ভ করতে। এই কোডটি androidx.work.impl.WorkManagerInitializer অভ্যন্তরীণ ক্লাসে থাকে এবং ডিফল্ট Configuration ব্যবহার করে। ডিফল্ট ইনিশিয়ালাইজার স্বয়ংক্রিয়ভাবে ব্যবহৃত হয় যদি না আপনি এটিকে স্পষ্টভাবে নিষ্ক্রিয় করেন । ডিফল্ট ইনিশিয়ালাইজার বেশিরভাগ অ্যাপের জন্য উপযুক্ত।

কাস্টম আরম্ভ

আপনি যদি প্রারম্ভিক প্রক্রিয়া নিয়ন্ত্রণ করতে চান, আপনাকে অবশ্যই ডিফল্ট ইনিশিয়ালাইজার নিষ্ক্রিয় করতে হবে, তারপর আপনার নিজস্ব কাস্টম কনফিগারেশন নির্ধারণ করুন।

একবার ডিফল্ট ইনিশিয়ালাইজার সরানো হলে, আপনি ওয়ার্ক ম্যানেজারকে ম্যানুয়ালি আরম্ভ করতে পারেন:

কোটলিন


// 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() রেফারেন্স ডকুমেন্টেশন দেখুন।