গ্ল্যান্স Action
ক্লাসের মাধ্যমে ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনাকে সহজ করে। গ্ল্যান্সের Action
ক্লাসগুলি একজন ব্যবহারকারীর ক্রিয়াকলাপগুলিকে সংজ্ঞায়িত করে এবং আপনি ক্রিয়াটির প্রতিক্রিয়া হিসাবে সম্পাদিত অপারেশনটি নির্দিষ্ট করতে পারেন। আপনি GlanceModifier.clickable
পদ্ধতির মাধ্যমে যেকোনো উপাদানে একটি Action
প্রয়োগ করতে পারেন।
অ্যাপ উইজেটগুলি একটি দূরবর্তী প্রক্রিয়ায় বাস করে, তাই ক্রিয়াগুলি তৈরির সময় সংজ্ঞায়িত করা হয় এবং নির্বাহটি দূরবর্তী প্রক্রিয়ায় ঘটে। নেটিভ RemoteViews
এ, এটি PendingIntents
মাধ্যমে করা হয়।
এই পৃষ্ঠায় নিম্নলিখিত কর্মগুলি বর্ণনা করা হয়েছে:
একটি কার্যকলাপ চালু করুন
ব্যবহারকারীর মিথস্ক্রিয়ায় একটি কার্যকলাপ চালু করতে, GlanceModifier.clickable
(..) সংশোধকের মাধ্যমে একটি Button
বা অন্যান্য কম্পোজেবলে actionStartActivity
ফাংশন প্রদান করুন।
actionStartActivity
এ নিম্নলিখিতগুলির মধ্যে একটি প্রদান করুন:
- লক্ষ্য কার্যকলাপ বর্গ
-
ComponentName
- একটি অভিপ্রায়
Glance প্রদত্ত লক্ষ্য এবং পরামিতি সহ একটি PendingIntent
এ অ্যাকশনকে অনুবাদ করে। নিম্নলিখিত উদাহরণে, একজন ব্যবহারকারী বোতামে ক্লিক করলে NavigationActivity
চালু হয়:
@Composable fun MyContent() { // .. Button( text = "Go Home", onClick = actionStartActivity<MyActivity>() ) }
একটি পরিষেবা চালু করুন
একটি ক্রিয়াকলাপ চালু করার অনুরূপ, actionStartService
পদ্ধতিগুলির একটি ব্যবহার করে ব্যবহারকারীর মিথস্ক্রিয়ায় একটি পরিষেবা চালু করুন।
actionStartService
এ নিম্নলিখিতগুলির মধ্যে একটি প্রদান করুন:
- লক্ষ্য কার্যকলাপ বর্গ
-
ComponentName
- একটি অভিপ্রায়
@Composable fun MyButton() { // .. Button( text = "Sync", onClick = actionStartService<SyncService>( isForegroundService = true // define how the service is launched ) ) }
একটি সম্প্রচার ঘটনা পাঠান
একটি actionSendBroadcast
পদ্ধতি ব্যবহার করে ব্যবহারকারীর মিথস্ক্রিয়ায় একটি সম্প্রচার ইভেন্ট পাঠান:
actionSendBroadcast
নিম্নলিখিতগুলির মধ্যে একটি প্রদান করুন:
- স্ট্রিং অ্যাকশন
-
ComponentName
- একটি অভিপ্রায়
-
BroadcastReceiver
ক্লাস
@Composable fun MyButton() { // .. Button( text = "Send", onClick = actionSendBroadcast<MyReceiver>() ) }
কাস্টম কর্ম সঞ্চালন
একটি নির্দিষ্ট লক্ষ্য চালু করার পরিবর্তে, গ্ল্যান্স একটি ক্রিয়া সম্পাদন করতে একটি ল্যাম্বডা অ্যাকশন বা actionRunCallback
ব্যবহার করতে পারে, যেমন UI আপডেট করা বা ব্যবহারকারীর ইন্টারঅ্যাকশনের অবস্থা।
ল্যাম্বডা অ্যাকশন চালান
আপনি UI মিথস্ক্রিয়াতে কলব্যাক হিসাবে ল্যাম্বডা ফাংশন ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, ল্যাম্বডা ফাংশনটি GlanceModifier.clickable
modifier-এ পাস করুন:
Text( text = "Submit", modifier = GlanceModifier.clickable { submitData() } )
অথবা, এটিকে সমর্থন করে এমন কম্পোজেবলের onClick
প্যারামিটারে পাস করুন:
Button( text = "Submit", onClick = { submitData() } )
ActionCallback চালান
বিকল্পভাবে, ব্যবহারকারীর মিথস্ক্রিয়ায় একটি ক্রিয়া সম্পাদন করতে actionRunCallback
পদ্ধতিগুলি ব্যবহার করুন। এটি করার জন্য, ActionCallback
এর একটি কাস্টম বাস্তবায়ন প্রদান করুন:
@Composable private fun MyContent() { // .. Image( provider = ImageProvider(R.drawable.ic_hourglass_animated), modifier = GlanceModifier.clickable( onClick = actionRunCallback<RefreshAction>() ), contentDescription = "Refresh" ) } class RefreshAction : ActionCallback { override suspend fun onAction( context: Context, glanceId: GlanceId, parameters: ActionParameters ) { // TODO implement } }
ব্যবহারকারীর ক্লিকে, প্রদত্ত ActionCallback
এর suspend onAction
পদ্ধতি বলা হয়, সংজ্ঞায়িত লজিক (অর্থাৎ, রিফ্রেশ ডেটার অনুরোধ করা)।
অ্যাকশন সঞ্চালিত হওয়ার পরে উইজেট আপডেট করতে, একটি নতুন উদাহরণ তৈরি করুন এবং কল update
(..)। আরও বিশদ বিবরণের জন্য, GlanceAppWidget রাজ্য পরিচালনা বিভাগটি দেখুন।
class RefreshAction : ActionCallback { override suspend fun onAction( context: Context, glanceId: GlanceId, parameters: ActionParameters ) { // do some work but offset long-term tasks (e.g a Worker) MyAppWidget().update(context, glanceId) } }
কর্মের পরামিতি প্রদান করুন
একটি ক্রিয়াকে অতিরিক্ত তথ্য প্রদান করতে, একটি টাইপ করা কী-মান জোড়া তৈরি করতে ActionParameters
API ব্যবহার করুন। উদাহরণস্বরূপ, ক্লিক করা গন্তব্য সংজ্ঞায়িত করতে:
private val destinationKey = ActionParameters.Key<String>( NavigationActivity.KEY_DESTINATION ) class MyAppWidget : GlanceAppWidget() { // .. @Composable private fun MyContent() { // .. Button( text = "Home", onClick = actionStartActivity<NavigationActivity>( actionParametersOf(destinationKey to "home") ) ) Button( text = "Work", onClick = actionStartActivity<NavigationActivity>( actionParametersOf(destinationKey to "work") ) ) } override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { MyContent() } } }
নীচে, প্যারামিটারগুলি অ্যাক্টিভিটি চালু করার জন্য ব্যবহৃত উদ্দেশ্যের মধ্যে অন্তর্ভুক্ত করা হয়েছে, যার ফলে টার্গেট অ্যাক্টিভিটি এটি পুনরুদ্ধার করতে পারে।
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val destination = intent.extras?.getString(KEY_DESTINATION) ?: return // ... } }
পরামিতিগুলি ActionCallback
প্রদান করা হয়। মান পুনরুদ্ধার করতে সংজ্ঞায়িত Parameters.Key
ব্যবহার করুন:
class RefreshAction : ActionCallback { private val destinationKey = ActionParameters.Key<String>( NavigationActivity.KEY_DESTINATION ) override suspend fun onAction( context: Context, glanceId: GlanceId, parameters: ActionParameters ) { val destination: String = parameters[destinationKey] ?: return // ... } }