ব্যাকগ্রাউন্ড থেকে কার্যক্রম শুরু করার উপর নিষেধাজ্ঞা

অ্যান্ড্রয়েড 10 (এপিআই লেভেল 29) এবং ব্যাকগ্রাউন্ডে অ্যাপ্লিকেশান চলাকালীন অ্যাপগুলি কখন কার্যকলাপ শুরু করতে পারে তার উপর উচ্চতর স্থানের সীমাবদ্ধতা। এই বিধিনিষেধগুলি ব্যবহারকারীর জন্য বাধা কমাতে সাহায্য করে এবং ব্যবহারকারীকে তাদের স্ক্রীনে যা দেখানো হয় তার উপর আরো নিয়ন্ত্রণে রাখে।

এই নির্দেশিকা ব্যাকগ্রাউন্ড থেকে কার্যক্রম শুরু করার বিকল্প হিসেবে বিজ্ঞপ্তি উপস্থাপন করে। এটি নির্দিষ্ট ক্ষেত্রে তালিকাভুক্ত করে যেখানে সীমাবদ্ধতা প্রযোজ্য নয়।

পরিবর্তে বিজ্ঞপ্তি প্রদর্শন করুন

প্রায় সব ক্ষেত্রেই, ব্যাকগ্রাউন্ডে থাকা অ্যাপগুলিকে সরাসরি কোনো কার্যকলাপ শুরু করার পরিবর্তে ব্যবহারকারীকে জরুরি তথ্য প্রদানের জন্য সময়-সংবেদনশীল বিজ্ঞপ্তিগুলি প্রদর্শন করতে হবে। এই ধরনের বিজ্ঞপ্তিগুলির মধ্যে একটি ইনকামিং ফোন কল বা একটি সক্রিয় অ্যালার্ম ঘড়ি পরিচালনা করা অন্তর্ভুক্ত।

এই বিজ্ঞপ্তি-ভিত্তিক সতর্কতা এবং অনুস্মারক সিস্টেম ব্যবহারকারীদের জন্য বিভিন্ন সুবিধা প্রদান করে:

  • ডিভাইস ব্যবহার করার সময়, ব্যবহারকারী একটি হেড-আপ বিজ্ঞপ্তি দেখেন যা তাদের প্রতিক্রিয়া জানাতে দেয়। ব্যবহারকারী তাদের বর্তমান প্রেক্ষাপট বজায় রাখে এবং স্ক্রীনে যে বিষয়বস্তু দেখতে পায় তার উপর তাদের নিয়ন্ত্রণ থাকে।
  • সময়-সংবেদনশীল বিজ্ঞপ্তিগুলি ব্যবহারকারীর বিরক্ত না করার নিয়মগুলিকে সম্মান করে৷ উদাহরণ স্বরূপ, ডু নট ডিস্টার্ব চালু থাকলে ব্যবহারকারীরা শুধুমাত্র নির্দিষ্ট পরিচিতি থেকে অথবা বারবার কলকারীদের থেকে কল করার অনুমতি দিতে পারে।
  • যখন ডিভাইসের স্ক্রীন বন্ধ থাকে, তখন পূর্ণ-স্ক্রীন অভিপ্রায় অবিলম্বে চালু হয়।
  • ডিভাইসের সেটিংস স্ক্রীনে, ব্যবহারকারী দেখতে পারে কোন অ্যাপ সম্প্রতি বিজ্ঞপ্তি পাঠিয়েছে, বিশেষ বিজ্ঞপ্তি চ্যানেলগুলি সহ। এই স্ক্রীন থেকে, ব্যবহারকারী তাদের বিজ্ঞপ্তি পছন্দ নিয়ন্ত্রণ করতে পারেন।

যখন অ্যাপগুলি কার্যক্রম শুরু করতে পারে

নিম্নলিখিত এক বা একাধিক শর্ত পূরণ হলে Android 10 বা উচ্চতর সংস্করণে চলমান অ্যাপগুলি কার্যকলাপ শুরু করতে পারে:

  • অ্যাপটির একটি দৃশ্যমান উইন্ডো রয়েছে, যেমন অগ্রভাগে একটি কার্যকলাপ।
  • অ্যাপটির ফোরগ্রাউন্ড টাস্কের পিছনের স্ট্যাকে একটি কার্যকলাপ রয়েছে।
  • সাম্প্রতিক স্ক্রিনে বিদ্যমান টাস্কের পিছনের স্ট্যাকে অ্যাপটির একটি কার্যকলাপ রয়েছে৷

  • অ্যাপটির একটি কার্যকলাপ রয়েছে যা খুব সম্প্রতি শুরু হয়েছে৷

  • খুব সম্প্রতি একটি কার্যকলাপের উপর finish() নামক অ্যাপ। এটি শুধুমাত্র তখনই প্রযোজ্য যখন অ্যাপটির ফোরগ্রাউন্ডে একটি অ্যাক্টিভিটি ছিল অথবা finish() কল করার সময় ফোরগ্রাউন্ড টাস্কের ব্যাক স্ট্যাকের একটি অ্যাক্টিভিটি ছিল।

  • অ্যাপটিতে নিম্নলিখিত পরিষেবাগুলির মধ্যে একটি রয়েছে যা সিস্টেম দ্বারা আবদ্ধ৷ এই পরিষেবাগুলির জন্য একটি UI চালু করার প্রয়োজন হতে পারে৷

  • অ্যাপটির একটি পরিষেবা রয়েছে যা একটি ভিন্ন, দৃশ্যমান অ্যাপ দ্বারা আবদ্ধ৷ ক্রিয়াকলাপগুলি সফলভাবে শুরু করার জন্য পটভূমিতে অ্যাপটির জন্য পরিষেবার সাথে আবদ্ধ অ্যাপটি দৃশ্যমান থাকতে হবে।

  • অ্যাপটি সিস্টেম থেকে PendingIntent একটি বিজ্ঞপ্তি পায়। পরিষেবা এবং ব্রডকাস্ট রিসিভারগুলির জন্য মুলতুবি থাকা অভিপ্রায়গুলির ক্ষেত্রে, অ্যাপটি মুলতুবি অভিপ্রায় পাঠানোর কয়েক সেকেন্ডের জন্য ক্রিয়াকলাপ শুরু করতে পারে।

  • অ্যাপটি একটি PendingIntent পায় যা একটি ভিন্ন, দৃশ্যমান অ্যাপ থেকে পাঠানো হয়।

  • অ্যাপটি একটি সিস্টেম ব্রডকাস্ট পায় যেখানে অ্যাপটি একটি UI চালু করবে বলে আশা করা হচ্ছে। উদাহরণগুলির মধ্যে রয়েছে ACTION_NEW_OUTGOING_CALL এবং SECRET_CODE_ACTION । অ্যাপটি সম্প্রচার পাঠানোর কয়েক সেকেন্ডের জন্য কার্যক্রম শুরু করতে পারে।

  • অ্যাপটি CompanionDeviceManager API-এর মাধ্যমে একটি সহচর হার্ডওয়্যার ডিভাইসের সাথে যুক্ত। এই API অ্যাপটিকে একটি পেয়ার করা ডিভাইসে ব্যবহারকারীর করা ক্রিয়াকলাপের প্রতিক্রিয়া হিসাবে ক্রিয়াকলাপ শুরু করতে দেয়।

  • অ্যাপটি একটি ডিভাইস পলিসি কন্ট্রোলার যা ডিভাইস মালিক মোডে চলছে। উদাহরণ ব্যবহারের ক্ষেত্রে সম্পূর্ণরূপে পরিচালিত এন্টারপ্রাইজ ডিভাইসের পাশাপাশি ডিজিটাল সাইনেজ এবং কিয়স্কের মতো ডেডিকেটেড ডিভাইস অন্তর্ভুক্ত।

  • অ্যাপটিকে ব্যবহারকারীর দ্বারা SYSTEM_ALERT_WINDOW অনুমতি দেওয়া হয়েছে৷

PendingIntents থেকে কার্যক্রম শুরু করার সময় অপ্ট-ইন প্রয়োজন

তালিকাভুক্ত অবস্থার উপর ভিত্তি করে দুর্ঘটনাজনিত ক্রিয়াকলাপ শুরু হওয়ার অনুমতি না দেওয়ার জন্য, Android 14 থেকে শুরু করে এমন স্পষ্ট API রয়েছে যেগুলি আপনাকে অ্যাক্টিভিটি শুরুর জন্য একটি অ্যাপের অনুমতি দেওয়া থেকে অপ্ট ইন বা আউট করার অনুমতি দেয়৷

অ্যান্ড্রয়েড 15 বা উচ্চতরকে লক্ষ্য করে এমন অ্যাপগুলি ডিফল্টভাবে তাদের তৈরি করা PendingIntents ব্যাকগ্রাউন্ড অ্যাক্টিভিটি লঞ্চ (বিএএল) সুবিধাগুলি আর পরোক্ষভাবে মঞ্জুর করবে না। স্পষ্টভাবে অপ্ট-ইন করা প্রয়োজন, এটি করার জন্য, অ্যাপটি PendingIntents পাঠাচ্ছে বা তৈরি করছে কিনা তার উপর নির্ভর করে এই বিকল্পগুলি।

মুলতুবি ইন্টেন্ট টেবিল
চিত্র 1: পটভূমি কার্যকলাপ লঞ্চের জন্য সিদ্ধান্ত প্রবাহ।

PendingIntent এর প্রেরকের দ্বারা

অ্যান্ড্রয়েড 14 বা উচ্চতর অ্যাপগুলিকে লক্ষ্য করে যেগুলি একটি PendingIntent শুরু করতে চায়

  • তালিকাভুক্ত শর্ত পূরণ করুন এবং
  • সেই ব্যতিক্রমগুলির উপর ভিত্তি করে ব্যাকগ্রাউন্ড অ্যাক্টিভিটি লঞ্চ করার অনুমতি দিতে বেছে নিন

এই অপ্ট-ইন শুধুমাত্র তখনই হওয়া উচিত যদি অ্যাপ ডেভেলপার জানেন যে অ্যাপটি একটি কার্যকলাপ শুরু করতে চলেছে।

নির্বাচন করতে, অ্যাপটিকে PendingIntent.send() বা অনুরূপ পদ্ধতিতে setPendingIntentBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED) সহ একটি ActivityOptions বান্ডেল পাস করতে হবে।

PendingIntent এর স্রষ্টার দ্বারা

অ্যান্ড্রয়েড 15 বা তার বেশির দিকের অ্যাপ্লিকেশানগুলিকে লক্ষ্য করে যেগুলি একটি PendingIntent তৈরি করে সেগুলিকে অবশ্যই পটভূমি কার্যকলাপ লঞ্চের অনুমতি দেওয়ার জন্য স্পষ্টভাবে নির্বাচন করতে হবে যদি তারা তালিকাভুক্ত অবস্থার অধীনে সেই PendingIntents গুলিকে চালু করতে চায়৷

বেশিরভাগ ক্ষেত্রে, PendingIntent শুরু করা অ্যাপটি বেছে নেওয়া উচিত। যাইহোক, যদি তৈরি করা অ্যাপটিকে এই সুবিধাগুলি প্রদান করতে হয়:

  • PendingIntent যে কোনো সময় তৈরি করা অ্যাপটি দৃশ্যমান হওয়া শুরু করা যেতে পারে।
  • PendingIntent যে কোনো সময় শুরু করা যেতে পারে যদি তৈরি করা অ্যাপটির বিশেষ সুবিধা থাকে।

অপ্ট-ইন করতে, অ্যাপটিকে PendingIntent.getActivity() বা অনুরূপ পদ্ধতিতে setPendingIntentCreatorBackgroundActivityStartMode (ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED) সহ একটি ActivityOptions বান্ডেল পাস করতে হবে।

আরও বিস্তারিত জানার জন্য প্রাসঙ্গিক রেফারেন্স ডকুমেন্টেশন পড়ুন: