অ্যান্ড্রয়েড কেটিএক্স অ্যান্ড্রয়েড জেটপ্যাকের অংশ।

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

  • এক্সটেনশন ফাংশন
  • এক্সটেনশন বৈশিষ্ট্য
  • ল্যাম্বডাস
  • নামযুক্ত প্যারামিটার
  • প্যারামিটারের ডিফল্ট মান
  • কোরোটিন

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

sharedPreferences
        .edit()  // create an Editor
        .putBoolean("key", value)
        .apply() // write to disk asynchronously

এই ব্যবহারের ক্ষেত্রে Kotlin lambdas একটি নিখুঁত ফিট। এডিটর তৈরি হওয়ার পরে কোডের একটি ব্লক পাস করে, কোডটি এক্সিকিউট করতে দেয় এবং তারপর SharedPreferences API-কে পরিবর্তনগুলি পরমাণুভাবে প্রয়োগ করতে দেয়, এগুলি আপনাকে আরও সংক্ষিপ্ত পদ্ধতি গ্রহণ করার অনুমতি দেয়।

এখানে Android KTX কোর ফাংশনগুলির একটির উদাহরণ দেওয়া হল, SharedPreferences.edit , যা SharedPreferences এ একটি সম্পাদনা ফাংশন যোগ করে। এই ফাংশনটি তার প্রথম আর্গুমেন্ট হিসেবে একটি ঐচ্ছিক boolean ফ্ল্যাগ গ্রহণ করে যা পরিবর্তনগুলি কমিট বা প্রয়োগ করতে হবে কিনা তা নির্দেশ করে। এটি একটি ল্যাম্বডা আকারে SharedPreferences এডিটরে সঞ্চালনের জন্য একটি ক্রিয়াও গ্রহণ করে।

// SharedPreferences.edit extension function signature from Android KTX - Core
// inline fun SharedPreferences.edit(
//         commit: Boolean = false,
//         action: SharedPreferences.Editor.() -> Unit)

// Commit a new value asynchronously
sharedPreferences.edit { putBoolean("key", value) }

// Commit a new value synchronously
sharedPreferences.edit(commit = true) { putBoolean("key", value) }

কলার পরিবর্তনগুলি কমিট করবেন নাকি প্রয়োগ করবেন তা বেছে নিতে পারবেন। ল্যাম্বডা action নিজেই SharedPreferences.Editor এ একটি বেনামী এক্সটেনশন ফাংশন যা তার স্বাক্ষর দ্বারা নির্দেশিত Unit ফেরত দেয়। এই কারণেই ব্লকের ভিতরে, আপনি সরাসরি SharedPreferences.Editor এ কাজটি সম্পাদন করতে সক্ষম।

অবশেষে, SharedPreferences.edit() স্বাক্ষরে inline কীওয়ার্ড থাকে। এই কীওয়ার্ডটি কোটলিন কম্পাইলারকে বলে যে প্রতিবার ফাংশনটি ব্যবহার করার সময় ফাংশনের জন্য কম্পাইল করা বাইটকোডটি কপি এবং পেস্ট (অথবা ইনলাইন ) করা উচিত। এটি প্রতিবার এই ফাংশনটি কল করার সময় প্রতিটি action জন্য একটি নতুন ক্লাস ইনস্ট্যান্টিয়েট করার ওভারহেড এড়ায়।

ল্যাম্বডাস ব্যবহার করে কোড পাস করার এই ধরণ, ওভাররাইড করা যেতে পারে এমন সংবেদনশীল ডিফল্ট প্রয়োগ করা এবং inline এক্সটেনশন ফাংশন ব্যবহার করে বিদ্যমান API গুলিতে এই আচরণগুলি যুক্ত করা অ্যান্ড্রয়েড KTX লাইব্রেরি দ্বারা প্রদত্ত বর্ধিতকরণগুলির বৈশিষ্ট্য।

আপনার প্রকল্পে অ্যান্ড্রয়েড কেটিএক্স ব্যবহার করুন

Android KTX ব্যবহার শুরু করতে, আপনার প্রোজেক্টের build.gradle ফাইলে নিম্নলিখিত নির্ভরতা যোগ করুন:

খাঁজকাটা

repositories {
    google()
}

কোটলিন

repositories {
    google()
}

অ্যান্ড্রয়েডএক্স মডিউল

অ্যান্ড্রয়েড কেটিএক্স মডিউলগুলিতে সংগঠিত, যেখানে প্রতিটি মডিউলে এক বা একাধিক প্যাকেজ থাকে।

আপনার অ্যাপের build.gradle ফাইলে প্রতিটি মডিউল আর্টিফ্যাক্টের জন্য একটি নির্ভরতা অন্তর্ভুক্ত করতে হবে। আর্টিফ্যাক্টের সাথে সংস্করণ নম্বরটি যুক্ত করতে ভুলবেন না। আপনি এই বিষয়ে প্রতিটি আর্টিফ্যাক্টের সংশ্লিষ্ট বিভাগে সর্বশেষ সংস্করণ নম্বরগুলি খুঁজে পেতে পারেন।

অ্যান্ড্রয়েড কেটিএক্স-এ একটি একক কোর মডিউল রয়েছে যা সাধারণ ফ্রেমওয়ার্ক এপিআই এবং বেশ কয়েকটি ডোমেন-নির্দিষ্ট এক্সটেনশনের জন্য কোটলিন এক্সটেনশন সরবরাহ করে।

কোর মডিউল বাদে, সমস্ত KTX মডিউল আর্টিফ্যাক্ট আপনার build.gradle ফাইলের অন্তর্নিহিত জাভা নির্ভরতা প্রতিস্থাপন করে। উদাহরণস্বরূপ, আপনি androidx.fragment:fragment নির্ভরতা androidx.fragment:fragment-ktx দিয়ে প্রতিস্থাপন করতে পারেন। এই সিনট্যাক্সটি সংস্করণটি আরও ভালভাবে পরিচালনা করতে সহায়তা করে এবং অতিরিক্ত নির্ভরতা ঘোষণার প্রয়োজনীয়তা যোগ করে না।

কোর কেটিএক্স

কোর KTX মডিউলটি অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অংশ এমন সাধারণ লাইব্রেরিগুলির জন্য এক্সটেনশন প্রদান করে। এই লাইব্রেরিগুলিতে জাভা-ভিত্তিক নির্ভরতা নেই যা আপনাকে build.gradle এ যোগ করতে হবে।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.core:core-ktx:1.17.0"
}

কোটলিন

dependencies {
    implementation("androidx.core:core-ktx:1.17.0")
}

কোর KTX মডিউলে থাকা প্যাকেজগুলির একটি তালিকা এখানে দেওয়া হল:

সংগ্রহ KTX

কালেকশন এক্সটেনশনগুলিতে অ্যান্ড্রয়েডের মেমোরি-দক্ষ সংগ্রহ লাইব্রেরিগুলির সাথে কাজ করার জন্য ইউটিলিটি ফাংশন রয়েছে, যার মধ্যে রয়েছে ArrayMap , LongSparseArray , LruCache এবং অন্যান্য।

এই মডিউলটি ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.collection:collection-ktx:1.5.0"
}

কোটলিন

dependencies {
    implementation("androidx.collection:collection-ktx:1.5.0")
}

কালেকশন এক্সটেনশনগুলি কোটলিনের অপারেটর ওভারলোডিংয়ের সুবিধা গ্রহণ করে কালেকশন কনক্যাটেনেশনের মতো জিনিসগুলিকে সহজ করে তোলে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

// Combine 2 ArraySets into 1.
val combinedArraySet = arraySetOf(1, 2, 3) + arraySetOf(4, 5, 6)

// Combine with numbers to create a new sets.
val newArraySet = combinedArraySet + 7 + 8

খণ্ড KTX

ফ্র্যাগমেন্ট KTX মডিউল ফ্র্যাগমেন্ট API কে সহজ করার জন্য বেশ কয়েকটি এক্সটেনশন প্রদান করে।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.fragment:fragment-ktx:1.8.9"
}

কোটলিন

dependencies {
    implementation("androidx.fragment:fragment-ktx:1.8.9")
}

ফ্র্যাগমেন্ট KTX মডিউলের সাহায্যে, আপনি ল্যাম্বডাসের সাহায্যে ফ্র্যাগমেন্ট লেনদেন সহজ করতে পারেন, উদাহরণস্বরূপ:

fragmentManager().commit {
   addToBackStack("...")
   setCustomAnimations(
           R.anim.enter_anim,
           R.anim.exit_anim)
   add(fragment, "...")
}

আপনি viewModels এবং activityViewModels প্রোপার্টি ডেলিগেট ব্যবহার করে একটি লাইনে ViewModel এর সাথে সংযুক্ত করতে পারেন:

// Get a reference to the ViewModel scoped to this Fragment
val viewModel by viewModels<MyViewModel>()

// Get a reference to the ViewModel scoped to its Activity
val viewModel by activityViewModels<MyViewModel>()

জীবনচক্র KTX

Lifecycle KTX প্রতিটি Lifecycle অবজেক্টের জন্য একটি LifecycleScope সংজ্ঞায়িত করে। Lifecycle ধ্বংস হয়ে গেলে এই স্কোপে চালু হওয়া যেকোনো coroutine বাতিল হয়ে যায়। আপনি lifecycle.coroutineScope অথবা lifecycleOwner.lifecycleScope প্রোপার্টি ব্যবহার করে Lifecycle এর CoroutineScope অ্যাক্সেস করতে পারেন।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.9.4"
}

কোটলিন

dependencies {
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.4")
}

নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে lifecycleOwner.lifecycleScope ব্যবহার করে অ্যাসিঙ্ক্রোনাসভাবে প্রি-কম্পিউটেড টেক্সট তৈরি করতে হয়:

class MyFragment: Fragment() {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        viewLifecycleOwner.lifecycleScope.launch {
            val params = TextViewCompat.getTextMetricsParams(textView)
            val precomputedText = withContext(Dispatchers.Default) {
                PrecomputedTextCompat.create(longTextContent, params)
            }
            TextViewCompat.setPrecomputedText(textView, precomputedText)
        }
    }
}

লাইভডেটা কেটিএক্স

LiveData ব্যবহার করার সময়, আপনাকে অ্যাসিঙ্ক্রোনাসভাবে মান গণনা করতে হতে পারে। উদাহরণস্বরূপ, আপনি একজন ব্যবহারকারীর পছন্দগুলি পুনরুদ্ধার করতে এবং আপনার UI-তে সেগুলি পরিবেশন করতে চাইতে পারেন। এই ক্ষেত্রে, LiveData KTX একটি liveData বিল্ডার ফাংশন প্রদান করে যা একটি suspend ফাংশন কল করে এবং ফলাফলটিকে LiveData অবজেক্ট হিসেবে পরিবেশন করে।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.9.4"
}

কোটলিন

dependencies {
    implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.9.4")
}

নিচের উদাহরণে, loadUser() হল অন্য কোথাও ঘোষিত একটি সাসপেন্ড ফাংশন। আপনি liveData বিল্ডার ফাংশন ব্যবহার করে loadUser() অ্যাসিঙ্ক্রোনাসভাবে কল করতে পারেন, এবং তারপর ফলাফল নির্গত করতে emit() ব্যবহার করতে পারেন:

val user: LiveData<User> = liveData {
    val data = database.loadUser() // loadUser is a suspend function.
    emit(data)
}

LiveData সাথে কোরোটিন ব্যবহার সম্পর্কে আরও তথ্যের জন্য, আর্কিটেকচার উপাদানগুলির সাথে কোটলিন কোরোটিন ব্যবহার দেখুন।

নেভিগেশন লাইব্রেরির প্রতিটি উপাদানের নিজস্ব KTX সংস্করণ রয়েছে যা API-কে আরও সংক্ষিপ্ত এবং কোটলিন-বাক্যমূলক করে তোলে।

এই মডিউলগুলি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.navigation:navigation-runtime-ktx:2.9.5"
    implementation "androidx.navigation:navigation-fragment-ktx:2.9.5"
    implementation "androidx.navigation:navigation-ui-ktx:2.9.5"
}

কোটলিন

dependencies {
    implementation("androidx.navigation:navigation-runtime-ktx:2.9.5")
    implementation("androidx.navigation:navigation-fragment-ktx:2.9.5")
    implementation("androidx.navigation:navigation-ui-ktx:2.9.5")
}

নিম্নলিখিত উদাহরণে দেখানো হয়েছে, গন্তব্য আর্গুমেন্ট অ্যাক্সেস করতে এবং গন্তব্যস্থলে নেভিগেট করতে এক্সটেনশন ফাংশন এবং সম্পত্তি প্রতিনিধিত্ব ব্যবহার করুন:

class MyDestination : Fragment() {

    // Type-safe arguments are accessed from the bundle.
    val args by navArgs<MyDestinationArgs>()

    ...
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        view.findViewById<Button>(R.id.next)
            .setOnClickListener {
                // Fragment extension added to retrieve a NavController from
                // any destination.
                findNavController().navigate(R.id.action_to_next_destination)
            }
     }
     ...

}

প্যালেট KTX

প্যালেট KTX মডিউলটি রঙ প্যালেটগুলির সাথে কাজ করার জন্য ইডিওম্যাটিক কোটলিন সমর্থন প্রদান করে।

এই মডিউলটি ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.palette:palette-ktx:1.0.0"
}

কোটলিন

dependencies {
    implementation("androidx.palette:palette-ktx:1.0.0")
}

উদাহরণস্বরূপ, একটি Palette ইনস্ট্যান্সের সাথে কাজ করার সময়, আপনি get অপারেটর ( [ ] ) ব্যবহার করে একটি নির্দিষ্ট target জন্য selected সোয়াচটি পুনরুদ্ধার করতে পারেন:

val palette = Palette.from(bitmap).generate()
val swatch = palette[target]

প্রতিক্রিয়াশীল স্ট্রিম KTX

রিঅ্যাক্টিভ স্ট্রিমস KTX মডিউল আপনাকে ReactiveStreams প্রকাশক থেকে একটি পর্যবেক্ষণযোগ্য LiveData স্ট্রিম তৈরি করতে দেয়।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:2.9.4"
}

কোটলিন

dependencies {
    implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:2.9.4")
}

উদাহরণস্বরূপ, ধরে নিন একটি ডাটাবেস যেখানে ব্যবহারকারীদের একটি ছোট তালিকা রয়েছে। আপনার অ্যাপে, আপনি ডাটাবেসটি মেমরিতে লোড করেন এবং তারপর আপনার UI-তে ব্যবহারকারীর ডেটা প্রদর্শন করেন। এটি অর্জনের জন্য, আপনি RxJava ব্যবহার করতে পারেন। Room Jetpack উপাদানটি ব্যবহারকারীর তালিকাটিকে Flowable হিসাবে পুনরুদ্ধার করতে পারে। এই পরিস্থিতিতে, আপনাকে আপনার অংশ বা কার্যকলাপের জীবনকাল জুড়ে Rx প্রকাশক সাবস্ক্রিপশন পরিচালনা করতে হবে।

তবে, LiveDataReactiveStreams সাহায্যে আপনি RxJava এবং এর সমৃদ্ধ অপারেটর এবং ওয়ার্ক-শিডিউলিং ক্ষমতা থেকে উপকৃত হতে পারেন এবং একই সাথে LiveData এর সরলতার সাথেও কাজ করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

val fun getUsersLiveData() : LiveData<List<User>> {
    val users: Flowable<List<User>> = dao.findUsers()
    return LiveDataReactiveStreams.fromPublisher(users)
}

রুম কেটিএক্স

রুম এক্সটেনশনগুলি ডাটাবেস লেনদেনের জন্য কোরোটিন সমর্থন যোগ করে।

এই মডিউলটি ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.room:room-ktx:2.8.3"
}

কোটলিন

dependencies {
    implementation("androidx.room:room-ktx:2.8.3")
}

এখানে কয়েকটি উদাহরণ দেওয়া হল যেখানে Room এখন coroutine ব্যবহার করে। প্রথম উদাহরণটি User অবজেক্টের তালিকা ফেরত দেওয়ার জন্য একটি suspend ফাংশন ব্যবহার করে, অন্যদিকে দ্বিতীয়টি Kotlin's Flow ব্যবহার করে User তালিকাটি অ্যাসিঙ্ক্রোনাসভাবে ফেরত দেয়। মনে রাখবেন যে Flow ব্যবহার করার সময়, আপনি যে টেবিলগুলিতে জিজ্ঞাসা করছেন তাতে কোনও পরিবর্তন সম্পর্কে আপনাকে অবহিত করা হবে।

@Query("SELECT * FROM Users")
suspend fun getUsers(): List<User>

@Query("SELECT * FROM Users")
fun getUsers(): Flow<List<User>>

SQLite KTX সম্পর্কে

SQLite এক্সটেনশনগুলি লেনদেনের মধ্যে SQL-সম্পর্কিত কোড মোড়ানো করে, প্রচুর বয়লারপ্লেট কোড বাদ দেয়।

এই মডিউলটি ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.sqlite:sqlite-ktx:2.6.1"
}

কোটলিন

dependencies {
    implementation("androidx.sqlite:sqlite-ktx:2.6.1")
}

ডাটাবেস লেনদেন সম্পাদনের জন্য transaction এক্সটেনশন ব্যবহারের একটি উদাহরণ এখানে দেওয়া হল:

db.transaction {
    // insert data
}

ভিউমডেল কেটিএক্স

ViewModel KTX লাইব্রেরি একটি viewModelScope() ফাংশন প্রদান করে যা আপনার ViewModel থেকে coroutines চালু করা সহজ করে তোলে। CoroutineScope Dispatchers.Main এর সাথে আবদ্ধ এবং ViewModel সাফ হয়ে গেলে স্বয়ংক্রিয়ভাবে বাতিল হয়ে যায়। আপনি প্রতিটি ViewModel এর জন্য একটি নতুন স্কোপ তৈরি করার পরিবর্তে viewModelScope() ব্যবহার করতে পারেন।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4"
}

কোটলিন

dependencies {
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4")
}

উদাহরণস্বরূপ, নিম্নলিখিত viewModelScope() ফাংশনটি একটি coroutine চালু করে যা একটি ব্যাকগ্রাউন্ড থ্রেডে একটি নেটওয়ার্ক অনুরোধ করে। লাইব্রেরি সমস্ত সেটআপ এবং সংশ্লিষ্ট স্কোপ ক্লিয়ারিং পরিচালনা করে:

class MainViewModel : ViewModel() {
    // Make a network request without blocking the UI thread
    private fun makeNetworkRequest() {
        // launch a coroutine in viewModelScope
        viewModelScope.launch  {
            remoteApi.slowFetch()
            ...
        }
    }

    // No need to override onCleared()
}

WorkManager KTX সম্পর্কে

ওয়ার্কম্যানেজার কেটিএক্স কোরোটিনের জন্য প্রথম-শ্রেণীর সহায়তা প্রদান করে।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

গ্রোভি

dependencies {
    implementation "androidx.work:work-runtime-ktx:2.11.0"
}

কোটলিন

dependencies {
    implementation("androidx.work:work-runtime-ktx:2.11.0")
}

Worker এক্সটেন্ড করার পরিবর্তে, আপনি এখন CoroutineWorker এক্সটেন্ড করতে পারেন, যার API একটু আলাদা। উদাহরণস্বরূপ, যদি আপনি কিছু নেটওয়ার্ক অপারেশন সম্পাদনের জন্য একটি সাধারণ CoroutineWorker তৈরি করতে চান, তাহলে আপনি নিম্নলিখিতগুলি করতে পারেন:

class CoroutineDownloadWorker(context: Context, params: WorkerParameters)
        : CoroutineWorker(context, params) {

    override suspend fun doWork(): Result = coroutineScope {
        val jobs = (0 until 100).map {
            async {
                downloadSynchronously("https://www.google.com")
            }
        }

        // awaitAll will throw an exception if a download fails, which
        // CoroutineWorker will treat as a failure
        jobs.awaitAll()
        Result.success()
    }
}

CoroutineWorker ব্যবহার সম্পর্কে আরও তথ্যের জন্য, CoroutineWorker-এ থ্রেডিং দেখুন।

WorkManager KTX বর্তমান কোরোটিন স্থগিত করার জন্য Operations এবং ListenableFutures এক্সটেনশন ফাংশন যোগ করে।

এখানে একটি উদাহরণ দেওয়া হল যা enqueue() দ্বারা ফেরত দেওয়া Operation স্থগিত করে:

// Inside of a coroutine...

// Run async operation and suspend until completed.
WorkManager.getInstance()
        .beginWith(longWorkRequest)
        .enqueue().await()

// Resume after work completes...

অন্যান্য KTX মডিউল

আপনি AndroidX এর বাইরে বিদ্যমান অতিরিক্ত KTX মডিউলগুলিও অন্তর্ভুক্ত করতে পারেন।

ফায়ারবেস কেটিএক্স

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

গুগল ম্যাপস প্ল্যাটফর্ম কেটিএক্স

গুগল ম্যাপস প্ল্যাটফর্ম অ্যান্ড্রয়েড এসডিকে-র জন্য KTX এক্সটেনশন উপলব্ধ রয়েছে যা আপনাকে এক্সটেনশন ফাংশন, নামযুক্ত প্যারামিটার এবং ডিফল্ট আর্গুমেন্ট, ডিস্ট্রাক্টরিং ডিক্লারেশন এবং কোরোটিনের মতো বেশ কয়েকটি কোটলিন ভাষার বৈশিষ্ট্যের সুবিধা নিতে দেয়। আরও তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:

কোর কেটিএক্স খেলুন

প্লে কোর কেটিএক্স প্লে কোর লাইব্রেরিতে SplitInstallManager এবং AppUpdateManager এক্সটেনশন ফাংশন যোগ করে ওয়ান-শট অনুরোধের জন্য কোটলিন কোরোটিন এবং স্ট্যাটাস আপডেট পর্যবেক্ষণের জন্য ফ্লো সমর্থন যোগ করে।

এই মডিউলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:

খাঁজকাটা

dependencies {
    implementation "com.google.android.play:core-ktx:1.8.1"
}

কোটলিন

dependencies {
    implementation("com.google.android.play:core-ktx:1.8.1")
}

এখানে একটি স্ট্যাটাস-মনিটরিং Flow উদাহরণ দেওয়া হল:

// Inside of a coroutine...

// Request in-app update status updates.
manager.requestUpdateFlow().collect { updateResult ->
    when (updateResult) {
        is AppUpdateResult.Available -> TODO()
        is AppUpdateResult.InProgress -> TODO()
        is AppUpdateResult.Downloaded -> TODO()
        AppUpdateResult.NotAvailable -> TODO()
    }
}

অধিক তথ্য

অ্যান্ড্রয়েড কেটিএক্স সম্পর্কে আরও জানতে, ডেভবাইটস ভিডিওটি দেখুন।

কোনও সমস্যা রিপোর্ট করতে বা কোনও বৈশিষ্ট্যের পরামর্শ দিতে, Android KTX ইস্যু ট্র্যাকার ব্যবহার করুন।