ফোরগ্রাউন্ড এবং ব্যাকগ্রাউন্ড ইউজার সিস্টেম হ্যান্ডলিং

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

অ্যান্ড্রয়েড 10 দিয়ে শুরু করে, অ্যান্ড্রয়েড অটোমোটিভের একটি ডিফল্ট কনফিগারেশন রয়েছে যা সর্বোচ্চ তিনজন ব্যবহারকারীকে একবারে চালানোর অনুমতি দেয় ( config_multiuserMaxRunningUsers )। অতএব, হেডলেস সিস্টেম ব্যবহারকারী (ব্যবহারকারী 0) ছাড়াও শুধুমাত্র একটি অগ্রভাগ ব্যবহারকারী এবং একটি ব্যাকগ্রাউন্ড ব্যবহারকারী কনফিগার করা যেতে পারে।

  • সাধারণ পরিস্থিতিতে, বর্তমান ব্যবহারকারী ফোরগ্রাউন্ডে চলে এবং হেডলেস সিস্টেম ব্যবহারকারী (User 0) ব্যাকগ্রাউন্ডে চলে। একবার একজন ব্যবহারকারীকে ব্যাকগ্রাউন্ডে সরানো হলে, ব্যবহারকারী বন্ধ হয়ে যায় কিন্তু লক করা হয় না। যখন সর্বাধিক সংখ্যক ব্যবহারকারী পূরণ করা হয়, তখন সর্বনিম্ন ব্যবহৃত ব্যাকগ্রাউন্ড ব্যবহারকারীকে থামানো হয় এবং লক করা হয় ( config_multiuserDelayUserDataLocking )।
  • থামানো এবং আনলক করা ব্যাকগ্রাউন্ড ব্যবহারকারীরা গ্যারেজ মোডের সময় পুনরায় চালু হয়।

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

ব্যাকগ্রাউন্ড ইউজার প্রসেস

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

ক্রমাগত পরিষেবাগুলি আরও সমস্যাযুক্ত কারণ এই পরিষেবাগুলি অ্যান্ড্রয়েডের আউট অফ মেমরি (OOM) ম্যানেজমেন্ট সিস্টেমে একটি উচ্চ অগ্রাধিকার বালতিতে রয়েছে৷ এমনকি যদি ফোরগ্রাউন্ড ব্যবহারকারীর জন্য অ্যাপগুলির জন্য আরও মেমরির প্রয়োজন হয়, সেই স্থায়ী পটভূমি প্রক্রিয়াগুলি বন্ধ করা হয় না। ফলস্বরূপ, ফোরগ্রাউন্ড ব্যবহারকারীর দৃষ্টিকোণ থেকে, অবিরাম পরিষেবাগুলি স্থায়ীভাবে কিছু পরিমাণ মেমরি তৈরি করে এবং সেই মেমরিটি কেবল তখনই ফেরত দেওয়া হয় যখন কোনও ব্যক্তি গাড়িটি পুনরায় বুট করে এবং যে কোনও ব্যাকগ্রাউন্ড ব্যবহারকারীদের থামানো হয়।

ব্যবহারকারীর অবস্থা

ব্যবহারকারী শুরু না হওয়া পর্যন্ত একজন ব্যবহারকারী একটি স্থগিত অবস্থায় থাকে ( STATE_SHUTDOWN )। যদি একটি ব্যবহারকারীর শংসাপত্র (যেমন একটি পিন) সেট করা থাকে, তাহলে Android ব্যবহারকারী চলে কিন্তু লক থাকে ( STATE_RUNNING_LOCKED ) যতক্ষণ না কোনো ব্যক্তি সেই ব্যবহারকারীর জন্য লকস্ক্রিন আনলক করে। যখন ব্যবহারকারী আনলক করা হয়, তাদের শংসাপত্র এনক্রিপ্ট করা স্টোরেজ ডিক্রিপ্ট করা হয় এবং সেই ব্যবহারকারীর জন্য ডেটা ডিরেক্টরিগুলি উপলব্ধ হয়৷ সাধারণ ব্যবহারকারী স্যুইচিংয়ের জন্য, ব্যাকগ্রাউন্ড ব্যবহারকারী বন্ধ করা হয় না এবং চালু থাকে এবং আনলক করা থাকে ( STATE_RUNNING_UNLOCKED ), একবার আনলক করা হয়।

গ্যারেজ মোড, কাজের সময়সূচী এবং ব্যবহারকারীদের জন্য অ্যাপ আপডেট

অটোমোটিভ অ্যাপ্লিকেশানগুলির জন্য ডেটা আপডেট করার জন্য প্রস্তাবিত কৌশল হল একটি ডিভাইস যখন নিষ্ক্রিয় অবস্থায় থাকে তখন কাজগুলি চালানোর জন্য কাজের সময় নির্ধারণ করতে JobScheduler ব্যবহার করে, গ্যারেজ মোডের মাধ্যমে (উদাহরণস্বরূপ, Google Play Store থেকে অ্যাপ আপডেট ডাউনলোড করা)৷ অ্যাপগুলি JobScheduler এবং JobSchedulerService-এর সাথে চাকরি নিবন্ধন করার পরে, সম্ভব হলে কাজগুলি চালানো হয়।

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

JobScheduler একটি নির্দিষ্ট ব্যবহারকারীর জন্য কাজ চালাতে পারে না যদি ব্যবহারকারী একটি পাওয়ার চক্রের পরে কখনও আনলক না হয়। যাইহোক, একবার আনলক করা হলে, এবং ব্যবহারকারী যদি STATE_RUNNING_UNLOCKED এ থেকে যায়, ব্যবহারকারীর জন্য কাজ চালানো যেতে পারে।