Android KTX Android Jetpack-এর অংশ।
Android KTX হল Kotlin এক্সটেনশনের একটি সেট যা Android Jetpack এবং অন্যান্য Android লাইব্রেরির সাথে অন্তর্ভুক্ত করা হয়েছে। KTX এক্সটেনশন Jetpack, Android প্ল্যাটফর্ম এবং অন্যান্য API-তে সংক্ষিপ্ত, ইডিওমেটিক Kotlin প্রদান করে। এটি করার জন্য, এই এক্সটেনশনগুলি নিম্নলিখিত সহ বেশ কয়েকটি Kotlin ভাষার ফিচার ব্যবহার করে:
- এক্সটেনশন ফাংশন
- এক্সটেনশন প্রপার্টি
- ল্যাম্বডা
- নামযুক্ত প্যারামিটার
- প্যারামিটারের ডিফল্ট ভ্যালু
- Coroutines
উদাহরণস্বরূপ, SharedPreferences নিয়ে কাজ করার সময়, পছন্দের ডেটায় কোনও পরিবর্তন করার আগে আপনাকে অবশ্যই
একটি এডিটর তৈরি করতে
হবে। এছাড়াও, এডিট করা হয়ে গেলে আপনাকে সেইসব পরিবর্তন প্রয়োগ
বা কমিট করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে
দেখানো হয়েছে:
sharedPreferences
.edit() // create an Editor
.putBoolean("key", value)
.apply() // write to disk asynchronously
Kotlin ল্যাম্বডা এই ব্যবহারের ক্ষেত্রে একদম উপযুক্ত। এগুলি আপনাকে আরও সংক্ষিপ্ত পদ্ধতি গ্রহণ করার অনুমতি দেয়। এর জন্য এডিটর তৈরি হওয়ার পরে এক্সিকিউট করার জন্য কোডের একটি ব্লক পাস করতে হয়, কোড এক্সিকিউট করতে হয় এবং তারপরে SharedPreferences API-কে অ্যাটমিকভাবে পরিবর্তনগুলি প্রয়োগ করতে দিতে হয়।
Android KTX Core ফাংশনের একটি উদাহরণ এখানে দেওয়া হল,
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 কীওয়ার্ড রয়েছে।
এই কীওয়ার্ড Kotlin কম্পাইলারকে বলে যে ফাংশনটি যতবার ব্যবহার করা হবে ততবারই ফাংশনের জন্য কম্পাইল করা বাইটকোড কপি ও পেস্ট (বা
ইনলাইন) করতে হবে।
এটি প্রতিবার এই ফাংশন কল করার সময় প্রতিটি action-এর জন্য নতুন ক্লাস ইনস্ট্যান্টিয়েট করার ওভারহেড এড়ায়।
ল্যাম্বডা ব্যবহার করে কোড পাস করার এই প্যাটার্ন, ওভাররাইড করা যেতে পারে এমন সংবেদনশীল ডিফল্ট প্রয়োগ করা এবং inline
এক্সটেনশন ফাংশন ব্যবহার করে বিদ্যমান API-তে এই আচরণগুলি যোগ করা Android KTX
লাইব্রেরি দ্বারা প্রদত্ত উন্নতির বৈশিষ্ট্য।
আপনার প্রোজেক্টে Android KTX ব্যবহার করা
Android KTX ব্যবহার করা শুরু করতে, আপনার প্রোজেক্টের
build.gradle ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:
গ্ৰুভি
repositories { google() }
Kotlin
repositories { google() }
AndroidX মডিউল
Android KTX মডিউলে সাজানো থাকে, যেখানে প্রতিটি মডিউলে এক বা একাধিক প্যাকেজ থাকে।
আপনার অ্যাপের build.gradle ফাইলে প্রতিটি মডিউল আর্টিফ্যাক্টের জন্য আপনাকে অবশ্যই একটি ডিপেন্ডেন্সি অন্তর্ভুক্ত করতে হবে। আর্টিফ্যাক্টে ভার্সন নম্বর যোগ করতে ভুলবেন না।
এই বিষয়ের প্রতিটি আর্টিফ্যাক্টের সংশ্লিষ্ট বিভাগে আপনি লেটেস্ট ভার্সন নম্বর
খুঁজে পাবেন।
Android KTX-এ একটি সিঙ্গেল কোর মডিউল থাকে যা সাধারণ ফ্রেমওয়ার্ক API-এর জন্য Kotlin এক্সটেনশন এবং একাধিক ডোমেন-নির্দিষ্ট এক্সটেনশন প্রদান করে।
কোর মডিউল ছাড়া, সব KTX মডিউল আর্টিফ্যাক্ট আপনার build.gradle ফাইলে
অন্তর্নিহিত Java ডিপেন্ডেন্সি প্রতিস্থাপন করে। যেমন, আপনি
androidx.fragment:fragment-এর উপর নির্ভরশীলতা
androidx.fragment:fragment-ktx দিয়ে পরিবর্তন করতে পারেন। এই সিনট্যাক্স ভার্সন ম্যানেজ করতে সাহায্য করে এবং অতিরিক্ত ডিপেন্ডেন্সি ডিক্লেয়ারেশন সংক্রান্ত প্রয়োজনীয়তা যোগ করে না।
Core KTX
Core KTX মডিউল সাধারণ লাইব্রেরির জন্য এক্সটেনশন প্রদান করে যা Android ফ্রেমওয়ার্কের
অংশ। এইসব লাইব্রেরিতে জাভা-ভিত্তিক ডিপেন্ডেন্সি নেই যা
আপনাকে build.gradle-এ যোগ করতে হবে।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
খাঁজকাটা
dependencies { implementation "androidx.core:core-ktx:1.19.1" }
কোটলিন
dependencies { implementation("androidx.core:core-ktx:1.19.1") }
Core KTX মডিউলে থাকা প্যাকেজের তালিকা এখানে দেওয়া হল:
- androidx.core.animation
- androidx.core.content
- androidx.core.content.res
- androidx.core.database
- androidx.core.database.sqlite
- androidx.core.graphics
- androidx.core.graphics.drawable
- androidx.core.location
- androidx.core.net
- androidx.core.os
- androidx.core.text
- androidx.core.transition
- androidx.core.util
- androidx.core.view
- androidx.core.widget
Collection KTX
কালেকশন এক্সটেনশনে Android-এর মেমরি-দক্ষ কালেকশন লাইব্রেরির সাথে কাজ করার জন্য ইউটিলিটি ফাংশন রয়েছে, যার মধ্যে ArrayMap, LongSparseArray,
LruCache এবং অন্যান্য অন্তর্ভুক্ত।
এই মডিউল ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্রোভি
dependencies { implementation "androidx.collection:collection-ktx:1.6.0" }
কোটলিন
dependencies { implementation("androidx.collection:collection-ktx:1.6.0") }
কালেকশন এক্সটেনশন Kotlin-এর অপারেটর ওভারলোডিংয়ের সুবিধা নিয়ে কালেকশন কনক্যাটিনেশনের মতো বিষয়গুলিকে সহজ করে তোলে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
// 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
Fragment KTX
Fragment KTX মডিউল ফ্র্যাগমেন্ট API সহজ করার জন্য একাধিক এক্সটেনশন প্রদান করে।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্রোভি
dependencies { implementation "androidx.fragment:fragment-ktx:1.9.1" }
কোটলিন
dependencies { implementation("androidx.fragment:fragment-ktx:1.9.1") }
Fragment 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>()
Lifecycle KTX
KTX লাইফসাইকেল প্রতিটি
Lifecycle অবজেক্টের জন্য একটি LifecycleScope সংজ্ঞায়িত করে। Lifecycle ধ্বংস হয়ে গেলে,
এই স্কোপে লঞ্চ করা যেকোনও কোরুটিন বাতিল হয়ে যায়। আপনি
lifecycle.coroutineScope বা lifecycleOwner.lifecycleScope প্রপার্টি ব্যবহার করে
Lifecycle-এর CoroutineScope অ্যাক্সেস করতে পারবেন।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
খাঁজকাটা
dependencies { implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.11.0" }
কোটলিন
dependencies { implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.11.0") }
নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে 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 KTX
LiveData ব্যবহার করার সময়, আপনাকে অ্যাসিঙ্ক্রোনাসভাবে মান গণনা করতে হতে পারে। যেমন, আপনি হয়ত ব্যবহারকারীর পছন্দ ফিরিয়ে আনতে এবং আপনার UI-তে তা দেখাতে
চান। এইসব ক্ষেত্রে, LiveData KTX একটি liveData বিল্ডার ফাংশন প্রদান করে যা
suspend ফাংশনকে কল করে এবং ফলাফলকে LiveData অবজেক্ট হিসেবে পরিবেশন করে।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
খাঁজকাটা
dependencies { implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.11.0" }
কোটলিন
dependencies { implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.11.0") }
নিম্নলিখিত উদাহরণে, loadUser() হল একটি সাসপেন্ড ফাংশন যা অন্য কোথাও ঘোষণা করা হয়েছে।
আপনি liveData বিল্ডার ফাংশন ব্যবহার করে অ্যাসিঙ্ক্রোনাসভাবে loadUser() কল করতে পারেন,
এবং তারপর ফলাফল প্রকাশ করতে emit() ব্যবহার করতে পারেন:
val user: LiveData<User> = liveData {
val data = database.loadUser() // loadUser is a suspend function.
emit(data)
}
LiveData-এর সাথে coroutines ব্যবহার করার ব্যাপারে আরও তথ্য পেতে, আর্কিটেকচার কম্পোনেন্টের সাথে Kotlin coroutines ব্যবহার করুন দেখুন।
Navigation KTX
নেভিগেশন লাইব্রেরির প্রতিটি কম্পোনেন্টের নিজস্ব KTX ভার্সন আছে যা API-কে আরও সংক্ষিপ্ত এবং Kotlin-ইডিওম্যাটিক হতে মানিয়ে নেয়।
এইসব মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্রুভি
dependencies { implementation "androidx.navigation:navigation-runtime-ktx:2.10.2" implementation "androidx.navigation:navigation-fragment-ktx:2.10.2" implementation "androidx.navigation:navigation-ui-ktx:2.10.2" }
কোটলিন
dependencies { implementation("androidx.navigation:navigation-runtime-ktx:2.10.2") implementation("androidx.navigation:navigation-fragment-ktx:2.10.2") implementation("androidx.navigation:navigation-ui-ktx:2.10.2") }
গন্তব্য আর্গুমেন্ট অ্যাক্সেস করতে এবং গন্তব্যে নেভিগেট করতে এক্সটেনশন ফাংশন এবং প্রপার্টি ডেলিগেশন ব্যবহার করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
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)
}
}
...
}
Palette KTX
Palette KTX মডিউল কালার প্যালেটের সাথে কাজ করার জন্য ইডিওমেটিক Kotlin সাপোর্ট অফার করে।
এই মডিউল ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্রোভি
dependencies { implementation "androidx.palette:palette-ktx:1.0.0" }
কোটলিন
dependencies { implementation("androidx.palette:palette-ktx:1.0.0") }
উদাহরণস্বরূপ, Palette ইনস্ট্যান্সের সাথে কাজ করার সময়, আপনি গেট অপারেটর ([ ]) ব্যবহার করে প্রদত্ত target-এর জন্য
selected সোয়াচ ফিরিয়ে আনতে পারেন:
val palette = Palette.from(bitmap).generate()
val swatch = palette[target]
Reactive Streams KTX
Reactive Streams KTX মডিউল আপনাকে ReactiveStreams প্রকাশক থেকে
একটি পর্যবেক্ষণযোগ্য LiveData স্ট্রিম তৈরি করতে দেয়।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
খাঁজকাটা
dependencies { implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:2.11.0" }
কোটলিন
dependencies { implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:2.11.0") }
উদাহরণস্বরূপ, ব্যবহারকারীদের একটি ছোট তালিকা সহ একটি ডেটাবেস ধরে নিন। আপনার অ্যাপে, আপনি
মেমরিতে ডেটাবেস লোড করেন এবং তারপর আপনার 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)
}
Room KTX
রুম এক্সটেনশন ডেটাবেস ট্রানজ্যাকশনের জন্য কোরুটিন সাপোর্ট যোগ করে।
এই মডিউল ব্যবহার করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্রোভি
dependencies { implementation "androidx.room:room-ktx:2.8.5" }
কোটলিন
dependencies { implementation("androidx.room:room-ktx:2.8.5") }
এখানে কয়েকটি উদাহরণ দেওয়া হল যেখানে Room এখন coroutines ব্যবহার করে। প্রথম উদাহরণে
User অবজেক্টের তালিকা রিটার্ন করতে suspend ফাংশন ব্যবহার করা হয়, যেখানে দ্বিতীয় উদাহরণে
User তালিকা অ্যাসিঙ্ক্রোনাসভাবে রিটার্ন করতে Kotlin-এর Flow
ব্যবহার করা হয়। মনে রাখবেন যে 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.7.1" }
কোটলিন
dependencies { implementation("androidx.sqlite:sqlite-ktx:2.7.1") }
ডেটাবেস ট্রানজ্যাকশন পারফর্ম করার জন্য transaction এক্সটেনশন ব্যবহার করার একটি উদাহরণ এখানে দেওয়া হল:
db.transaction {
// insert data
}
ViewModel KTX
ViewModel KTX লাইব্রেরি একটি viewModelScope() ফাংশন প্রদান করে যা আপনার ViewModel থেকে coroutines লঞ্চ করা
সহজ করে তোলে। CoroutineScope
Dispatchers.Main-এর সাথে বাউন্ড করা আছে এবং ViewModel মুছে দেওয়া হলে
অটোমেটিক বাতিল হয়ে যায়। প্রতিটি ViewModel-এর জন্য নতুন স্কোপ তৈরি করার পরিবর্তে
আপনি viewModelScope() ব্যবহার করতে পারেন।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
খাঁজকাটা
dependencies { implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.11.0" }
কোটলিন
dependencies { implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.11.0") }
উদাহরণস্বরূপ, নিম্নলিখিত viewModelScope() ফাংশনটি একটি কোরুটিন চালু করে
যা ব্যাকগ্রাউন্ড থ্রেডে একটি নেটওয়ার্ক অনুরোধ করে। লাইব্রেরি সব সেট-আপ এবং
সংশ্লিষ্ট স্কোপ মুছে ফেলার কাজ ম্যানেজ করে:
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
WorkManager KTX, coroutine-এর জন্য ফার্স্ট-ক্লাস সহায়তা প্রদান করে।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্রুভি
dependencies { implementation "androidx.work:work-runtime-ktx:2.12.0" }
কোটলিন
dependencies { implementation("androidx.work:work-runtime-ktx:2.12.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 মডিউল অন্তর্ভুক্ত করতে পারেন।
Firebase KTX
Android-এর জন্য কিছু Firebase SDK-তে Kotlin এক্সটেনশন লাইব্রেরি আছে যা আপনার অ্যাপে Firebase ব্যবহার করার সময় আপনাকে ইডিওমেটিক Kotlin কোড লিখতে দেয়। আরও তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:
Google Maps Platform KTX
Google Maps Platform Android SDK-এর জন্য KTX এক্সটেনশন উপলভ্য আছে যা আপনাকে এক্সটেনশন ফাংশন, নামযুক্ত প্যারামিটার ও ডিফল্ট আর্গুমেন্ট, ডিস্ট্রাকচারিং ডিক্লারেশন ও কোরুটিনের মতো Kotlin ভাষার বিভিন্ন ফিচারের সুবিধা নিতে দেয়। আরও তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:
Play Core KTX
Play Core KTX, ওয়ান-শট অনুরোধের জন্য Kotlin coroutines এবং স্ট্যাটাস আপডেট মনিটর করার জন্য Flow-এর জন্য সহায়তা যোগ করে।
এটি করার জন্য Play Core লাইব্রেরিতে SplitInstallManager এবং AppUpdateManager-এ এক্সটেনশন ফাংশন যোগ করা হয়।
এই মডিউল অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle ফাইলে নিম্নলিখিতগুলি যোগ করুন:
গ্ৰুভি
dependencies { implementation "com.google.android.play:core-ktx:1.8.1" }
Kotlin
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 সম্পর্কে আরও জানতে, DevBytes ভিডিও দেখুন।
কোনও সমস্যার ব্যাপারে অভিযোগ জানাতে বা কোনও ফিচার সাজেস্ট করতে, Android KTX ইস্যু ট্র্যাকার ব্যবহার করুন।