android অ্যান্ড্রয়েড 'কনটেক্সট' কি?




android-context (23)

সহজ নির্বাণ, Androids Context একটি জগাখিচুড়ি যে আপনি ভালবাসেন না হওয়া পর্যন্ত আপনি ভালবাসেন না।

অ্যান্ড্রয়েড Context এর হয়:

  • আল্লাহর বস্তু।

  • যখন আপনি Android এর জন্য ডেভেলপ করা শুরু করছেন তখন আপনার সমস্ত অ্যাপ্লিকেশনটি প্রায় পাস করতে চান, তবে আপনি প্রোগ্রামিং, টেস্টিং এবং Android এর সাথে খুব সামান্য পেতে গেলে এটি এড়ানো থেকে বিরত থাকবেন।

    • অস্পষ্ট নির্ভরতা।

    • মেমরি লিক সাধারণ উৎস।

    • পরীক্ষার জন্য পিটিএ।

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

অ্যান্ড্রয়েড প্রোগ্রামিং এ কোন Context ক্লাস কি এবং এটি কিসের জন্য ব্যবহৃত হয়?

আমি বিকাশকারী সাইটে এটি সম্পর্কে পড়ি, কিন্তু আমি স্পষ্টভাবে বুঝতে পারছি না।


প্রসঙ্গ সংজ্ঞা

  • প্রসঙ্গ পরিবেশ তথ্য প্রতিনিধিত্ব করে
  • এটি ডাটাবেস হিসাবে জিনিস অ্যাক্সেস উপলব্ধ করা হয়

সহজ শর্তাবলী (উদাহরণ 1)

  • ব্যক্তি-এক্স বিবেচনা করুন একটি স্টার্ট আপ সফটওয়্যার কোম্পানির সিইও।

  • কোম্পানির একটি সীসা স্থপতি উপস্থিত রয়েছে, এই সীসা স্থপতি কোম্পানির সমস্ত কাজ করে যা ডেটাবেস, UI ইত্যাদি অন্তর্ভুক্ত।

  • এখন সিইও একটি নতুন বিকাশকারী ভাড়া।

  • এটি এমন একজন স্থপতি যিনি নতুন ব্যক্তির দক্ষতার উপর ভিত্তি করে নবনির্বাচিত ব্যক্তির দায়িত্ব বলছেন যে তিনি ডেটাবেস বা UI এ কাজ করবেন কিনা।

সহজ শর্তাবলী (উদাহরণ 2)

  • এটি অ্যাপের সংস্থানে Android কার্যকলাপের অ্যাক্সেসের মতো।

  • আপনি যখন কোনও হোটেলে যান তখন এটি একই রকম, আপনি উপযুক্ত সময়ে ব্রেকফাস্ট, লাঞ্চ এবং ডিনার চান?

  • আপনি থাকার সময় অনেক অন্যান্য জিনিস আছে। আপনি কিভাবে এই জিনিস পেতে পারি?

  • আপনি আপনার জন্য এই জিনিস আনতে রুম সার্ভিস ব্যক্তি জিজ্ঞাসা।

  • এখানে রুম সার্ভিস পরিষেবাটি বিবেচনা করা হচ্ছে যে আপনি একক ক্রিয়াকলাপ এবং হোটেলটি আপনার অ্যাপ্লিকেশন হিসাবে বিবেচিত হবেন, অবশেষে ব্রেকফাস্ট, লাঞ্চ এবং ডিনারের সংস্থান হতে হবে।

প্রসঙ্গ যা জড়িত হয়:

  1. একটি সম্পদ লোড হচ্ছে।
  2. একটি নতুন কার্যকলাপ চালু।
  3. মতামত তৈরি করা।
  4. সিস্টেম সেবা প্রাপ্ত।

কনট্যাক্টটি কার্যকলাপ , পরিষেবা , অ্যাপ্লিকেশন ইত্যাদির জন্য বেস ক্লাস

এটি বর্ণনা করার অন্য উপায়: টেলিভিশনে টিভি ও চ্যানেলগুলির দূরবর্তী হিসাবে প্রসঙ্গগুলি বিবেচনা করুন, উদ্দেশ্যগুলি ব্যবহার করে, সংস্থানগুলি, ইত্যাদি ব্যবহার করে - - - দূরবর্তী স্থানে সমস্ত বিভিন্ন সংস্থানগুলিতে অ্যাক্সেস পেতে দূরবর্তী অ্যাক্সেস হিসাবে দূরবর্তী কাজগুলি।

  • সুতরাং রিমোটের সংস্থান, পরিষেবাদি, উদ্দেশ্যগুলি ব্যবহার করে চ্যানেল ইত্যাদির অ্যাক্সেস রয়েছে ....

  • অনুরূপভাবে ... যে কেউ স্বাভাবিকভাবেই দূরবর্তীতে অ্যাক্সেস করতে পারে সেগুলি যেমন সম্পদ, পরিষেবা, উদ্দেশ্যগুলি ব্যবহার করে সমস্ত কিছুতে অ্যাক্সেস আছে

বিভিন্ন পদ্ধতির মাধ্যমে আপনি প্রসঙ্গ পেতে পারেন

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • অথবা this (যখন কার্যকলাপ ক্লাসে)

উদাহরণ:

TextView TV=new TextView(this);

this -> বর্তমান কার্যকলাপ প্রসঙ্গ বোঝায়।


অ্যান্ড্রয়েড context বোঝার জন্য সহজ উদাহরণ:

প্রতিটি বসের সব কম গুরুত্বপূর্ণ এবং সময় গ্রাসকারী কাজ করতে, যত্ন নেওয়ার একটি সহকারী আছে। যদি একটি ফাইল বা একটি কাপ কফি প্রয়োজন হয়, সহকারী চালানো হয়। কিছু বসের অফিসে কি চলছে তা সবেমাত্র জানেন, তাই তারা এ ব্যাপারে তাদের সহকারীদেরও জিজ্ঞাসা করে। তারা নিজেরাই কিছু কাজ করে কিন্তু বেশিরভাগ ক্ষেত্রেই তাদের সহায়কদের সাহায্যের প্রয়োজন হয়।

এই পরিস্থিতিতে,

বস - অ্যান্ড্রয়েড অ্যাপ্লিকেশন

সহকারী - প্রসঙ্গ

ফাইল / কফি কাপ - সম্পদ

ক্রিয়াকলাপ, অ্যাপ্লিকেশন ইত্যাদির মতো আমাদের আবেদনের বিভিন্ন অংশ সম্পর্কে তথ্য পেতে হলে আমরা সাধারণত প্রসঙ্গে কল করি।

প্রেক্ষাপটে জড়িত কিছু অপারেশন (সহায়ক যেখানে জিনিস প্রয়োজন হয়):

সাধারণ সংস্থান লোড হচ্ছে গতিশীল মতামত তৈরি করা টোস্ট বার্তাগুলি ক্রিয়াকলাপগুলি আরম্ভ করা ইত্যাদি। প্রসঙ্গ প্রাপ্তির বিভিন্ন উপায়:

getContext()

getBaseContext()

getApplicationContext()

this

Contextবর্তমান মানে। Contextবর্তমান পর্দা জন্য অপারেশন করতে ব্যবহার করুন। প্রাক্তন।
1. পেতে অ্যাপ্লিকেশন Context ()
2. GetContext ()

Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();

Contextবিভিন্ন সময়সীমার মধ্যে উপাদান (বা আবেদন) মানে। যদি আমি 1 থেকে 2 টা পর্যন্ত অনেক খাবার খাই তবে আমার সেই সময়টির প্রেক্ষাপটে সেই পদ্ধতির (বা সংস্থান) অ্যাক্সেস করতে ব্যবহৃত হয় যা আমি সেই সময় ব্যবহার করি। বিষয়বস্তু নির্দিষ্ট সময়ের জন্য একটি উপাদান (অ্যাপ্লিকেশন)। Contextঅ্যাপ্লিকেশন উপাদান উপাদান বা অ্যাপ্লিকেশন অন্তর্নিহিত জীবনচক্র উপর ভিত্তি করে পরিবর্তন রাখে। উদাহরণস্বরূপ, oncreate () এর ভিতরে Activity,

getBaseContext()- contextএর Activityযেটি গঠন করে (তৈরি) কার্যকলাপের কন্সট্রাকটর দেয়। getApplicationContext()- Contextঅ্যাপ্লিকেশন তৈরি সময় সেটআপ (তৈরি) দেয় ।

নোট: <application>সব অ্যান্ড্রয়েড উপাদান ধরে রাখে।

<application>
    <activity> .. </activity> 

    <service>  .. </service>

    <receiver> .. </receiver>

    <provider> .. </provider>
</application> 

এর মানে হল, getApplicationContext()যেকোন উপাদান থেকে আপনি যখন কল করেন, তখন আপনি পুরো আবেদনটির সাধারণ প্রসঙ্গটি কল করছেন।

Context উপাদান জীবনধারা উপর ভিত্তি করে সিস্টেম দ্বারা সংশোধন করা হচ্ছে।


প্রসঙ্গটি অ্যাপ্লিকেশন / বস্তুর বর্তমান অবস্থা প্রসঙ্গ। এটি এমন একটি সত্তা যা বিভিন্ন পরিবেশ ডেটা উপস্থাপন করে। কনটেক্সট বর্তমান ক্রিয়াকলাপকে স্থানীয় পরিবেশ, স্থানীয় ডাটাবেস, পরিবেশের সাথে যুক্ত লোডার লোডার যেমন সিস্টেম-স্তরের পরিষেবাদি এবং আরও অনেক কিছু সহ বাইরে পরিবেশের সাথে যোগাযোগ করতে সহায়তা করে।

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

বিভিন্ন প্ররোচনা পদ্ধতির মাধ্যমে আপনি প্রসঙ্গ পেতে পারেন 1. পেতে অ্যাপ্লিকেশনটি (), 2. getContext (), 3. পেতে BaseContext () 4. অথবা এটি (কার্যকলাপ শ্রেণীতে যখন)।


এটিকে ভিএম হিসাবে মনে করুন যা অ্যাপ বা পরিষেবাটি চলছে এমন প্রক্রিয়াটি নষ্ট করেছে। নিরবচ্ছিন্ন পরিবেশের অন্তর্নিহিত সিস্টেমের তথ্য এবং কিছু অনুমোদিত সংস্থানগুলির একটি গুচ্ছ অ্যাক্সেস রয়েছে। আপনি যে সেবা পেতে যে প্রসঙ্গ প্রয়োজন।


বস সহকারী আনালগি

কনটেক্সট প্রযুক্তিগত গভীরতার মধ্যে ডাইভিং আগে একটি ছোট উপমা আছে যাক

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

তাই এখানে
বস - অ্যান্ড্রয়েড অ্যাপ্লিকেশন
সহকারী - প্রসঙ্গ
ফাইল বা কফি কাপ - রিসোর্স

কোন সরকারী অ্যান্ড্রয়েড বিকাশকারী সাইট Context সম্পর্কে বলেছেন

প্রসঙ্গ অ্যাপ্লিকেশন সম্পর্কিত সম্পদ জন্য আপনার অ্যাক্সেস পয়েন্ট

এর কিছু সম্পদ বা কাজ দেখতে দিন

  • একটি কার্যকলাপ আরম্ভ করা।

  • ফাইল সিস্টেমে অ্যাপ্লিকেশন নির্দিষ্ট ক্যাশে ডিরেক্টরি পরম পথ পাচ্ছেন।

  • কোন বিশেষ প্রক্রিয়া এবং সিস্টেমের মধ্যে চলমান ব্যবহারকারী আইডি দেওয়া অনুমতি অনুমোদিত কিনা তা নির্ধারণ করা।

  • আপনি একটি বিশেষ অনুমতি দেওয়া হয়েছে কিনা তা পরীক্ষা করে দেখুন।

এবং তাই।
তাই যদি কোন Android অ্যাপ্লিকেশন কোনও কার্যকলাপ শুরু করতে চায় তবে এটি সরাসরি Context (অ্যাক্সেস পয়েন্ট) যায় এবং Context ক্লাসটি তাকে সংস্থানগুলি ফেরত দেয় (এই ক্ষেত্রে অভিপ্রায়)।

অন্য যেকোনো ক্লাস Context ক্লাসের মত ক্ষেত্র এবং পদ্ধতি রয়েছে।
আপনি আনুষ্ঠানিক ডকুমেন্টেশনের Context সম্পর্কে আরও অন্বেষণ করতে পারেন, এটি বেশিরভাগ সবকিছু, উপলব্ধ পদ্ধতি, ক্ষেত্র এবং এমনকি পদ্ধতিগুলির সাথে ক্ষেত্রগুলি কীভাবে ব্যবহার করবেন তা জুড়ে দেয়।


জাভাতে, আমরা বলি এই শব্দটি অ্যাপ্লিকেশনের বর্তমান বস্তুর অবস্থা বোঝায়।
একইভাবে, আমরা বিকল্প একটি ContextAndroid মধ্যে আছে ।

এটি স্পষ্টভাবে বা implicitly সংজ্ঞায়িত করা যেতে পারে,

Context con = this;

getApplicationContext();

getBaseContext();

getContext();

কনটেক্সট মানে অ্যান্ড্রয়েড জানাতে পারে যে কোন ক্রিয়াকলাপের জন্য আমার যেতে হবে বা কাজ করতে হবে।

1 - Toast.makeText (প্রসঙ্গ, "সমস্ত বিশদ লিখুন", টোস্ট। LENGTH_SHORT)। শো (); এটা এই ব্যবহৃত। প্রসঙ্গ প্রসঙ্গ = ActivityName.this;

2 -আউট অ্যাক্টিভিটি (নতুন ইন্টেন্ট (প্রসঙ্গ, লগইন অ্যাক্টিভিটি.ক্লাস));

এই প্রসঙ্গে আপনি কোন কার্যকলাপ থেকে অন্য ক্রিয়াকলাপে যেতে চান। প্রসঙ্গ বা ActivityName.this তারপর দ্রুত, getContext এবং getApplicatinContext পেতে।


Classroid.tontent.Context বর্গের উদাহরণটি অ্যান্ড্রয়েড সিস্টেমে সংযোগ সরবরাহ করে যা অ্যাপ্লিকেশনটি চালায়। উদাহরণস্বরূপ, আপনি কনটেক্সটের মাধ্যমে বর্তমান ডিভাইস প্রদর্শনের আকারটি পরীক্ষা করতে পারেন।

এটি প্রকল্পের সম্পদ অ্যাক্সেস দেয়। এটি অ্যাপ্লিকেশন পরিবেশ সম্পর্কে বিশ্বব্যাপী তথ্য ইন্টারফেস।

কনটেক্সট ক্লাসটি Android ভিত্তিক পরিষেবাদিতে অ্যাক্সেস সরবরাহ করে, যেমন, অ্যালার্ম ম্যানেজার সময় ভিত্তিক ইভেন্টগুলি ট্রিগার করতে।

ক্রিয়াকলাপ এবং সেবা প্রসঙ্গ ক্লাস প্রসারিত। অতএব তারা কনটেক্সট অ্যাক্সেস করতে সরাসরি ব্যবহার করা যেতে পারে।


প্রসঙ্গ এই হিসাবে বর্তমান বস্তুর একটি রেফারেন্স। এছাড়াও প্রসঙ্গ অ্যাপ্লিকেশন পরিবেশ সম্পর্কে তথ্য অ্যাক্সেস করতে পারবেন।


আপনি অ্যান্ড্রয়েডে অন্যান্য পরিচিত ক্লাসগুলির সাথে কনটেক্সট সংযোগ করতে চাইলে, এই গঠনটি মনে রাখবেন:

প্রসঙ্গ <ContextWrapper <অ্যাপ্লিকেশন

কনটেক্সট <কনটেক্সটপ্যাপার <কনটেক্সট থিমওয়েপার <ক্রিয়াকলাপ

কনটেক্সট <কনটেক্সটপ্যাপার <কনটেক্সট থিমওয়েপার <ক্রিয়াকলাপ <তালিকা অ্যাক্টিভিটি

কনটেক্সট <ContextWrapper <সেবা

কনটেক্সট <ContextWrapper <সেবা <ইন্টেন্ট সার্ভিস

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

আমি here প্রসঙ্গ পার্থক্য ব্যাখ্যা।


এটা সহজভাবে নির্বাণ:

নাম প্রস্তাব করে, এটি অ্যাপ্লিকেশন / বস্তুর বর্তমান অবস্থা প্রসঙ্গ। এটা নতুন তৈরি বস্তু কি চলছে তা বুঝতে দেয়। সাধারণত আপনি আপনার প্রোগ্রামের অন্য অংশ (কার্যকলাপ এবং প্যাকেজ / অ্যাপ্লিকেশন) সম্পর্কিত তথ্য পেতে এটি কল করেন।

আপনি getApplicationContext() , getContext() , getBaseContext() অথবা this (যখন ক্লাসে যে অ্যাপ্লিকেশন, ক্রিয়াকলাপ, পরিষেবা এবং ইন্টেন্ট পরিষেবা ক্লাসের মতো বিস্তৃত হয় তখন) পেতে পারেন।

প্রসঙ্গের সাধারণ ব্যবহার:

  • নতুন বস্তু তৈরি করা: নতুন মতামত, অ্যাডাপ্টার, শ্রোতা তৈরি করা:

    TextView tv = new TextView(getContext());
    ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
  • সাধারণ সাধারণ সংস্থানগুলি অ্যাক্সেস করা : LAYOUT_INFLATER_SERVICE এর মতো পরিষেবাদি, ভাগ করা পরিচিতিগুলি:

    context.getSystemService(LAYOUT_INFLATER_SERVICE)
    getApplicationContext().getSharedPreferences(*name*, *mode*);
  • উপাদানগুলি আনুষ্ঠানিকভাবে অ্যাক্সেস করা : বিষয়বস্তুর সরবরাহকারী, সম্প্রচার, অভিপ্রায় সম্পর্কিত

    getApplicationContext().getContentResolver().query(uri, ...);

  • Context পরিবেশ তথ্য পেতে একটি হ্যান্ডেল প্রতিনিধিত্ব করে।
  • Context ক্লাস নিজেই বিমূর্ত হিসাবে ঘোষণা করা হয়, যার বাস্তবায়ন অ্যান্ড্রয়েড ওএস দ্বারা সরবরাহ করা হয়।
  • Context টেলিভিশনে টিভি ও চ্যানেলগুলির রিমোটের মতো সম্পদ, পরিষেবাদি ইত্যাদি।

আপনি এটা দিয়ে কি করতে পারেন?

  • লোড হচ্ছে সম্পদ।
  • একটি নতুন কার্যকলাপ চালু।
  • মতামত তৈরি করা।
  • সিস্টেম সেবা প্রাপ্ত।

প্রসঙ্গ পেতে উপায়:

  • getApplicationContext()
  • getContext()
  • getBaseContext()

একটি Context আমাদের অধিকাংশ আবেদন করবে । এটা অ্যান্ড্রয়েড সিস্টেম দ্বারা তৈরি করা হয় এবং শুধুমাত্র একটি অ্যাপ্লিকেশন কি করতে সক্ষম হয়। টমক্যাটে, একটি প্রসঙ্গ যা আমি একটি অ্যাপ্লিকেশন কল করব।

অনেকগুলি ক্রিয়াকলাপ রয়েছে এমন এক প্রসঙ্গ রয়েছে, প্রতিটি কার্যকলাপে অনেকগুলি দর্শন থাকতে পারে।

স্পষ্টতই, কেউ কেউ বলবে যে এটি এই বা তার কারণে উপযুক্ত নয় এবং তারা সম্ভবত সঠিক, কিন্তু একটি প্রসঙ্গ আপনার বর্তমান অ্যাপ্লিকেশনটি আপনাকে পদ্ধতির প্যারামিটারগুলিতে কী রেখেছে তা বুঝতে সহায়তা করবে।


শুধু নতুনbies জন্য এটি নির্বাণ;

সুতরাং প্রথম শব্দ কনটেক্সট বুঝতে:

ইংরেজি-লিব। এটা মানে:

"কোনও ঘটনা, বিবৃতি বা ধারণাটির জন্য সেটিং তৈরি করে এমন পরিস্থিতিগুলি এবং সেগুলির সম্পূর্ণরূপে বোঝা এবং মূল্যায়ন করা যেতে পারে।"

"লিখিত বা কথিত কিছু অংশ যা অবিলম্বে একটি শব্দ বা উত্তরণ অনুসরণ করে এবং এর অর্থ ব্যাখ্যা করে।"

এখন প্রোগ্রামিং বিশ্বের একই বোঝা নিতে:

অ্যাপ্লিকেশন / বস্তুর বর্তমান অবস্থা প্রসঙ্গ। এটা নতুন তৈরি বস্তু কি চলছে তা বুঝতে দেয়। সাধারণত আপনি এটি আপনার প্রোগ্রামের অন্য অংশ সম্পর্কিত সম্পর্কিত তথ্য পেতে (কার্যকলাপ, প্যাকেজ / অ্যাপ্লিকেশন)

আপনি getApplicationContext() , getContext(), getBaseContext() বা this (কার্যকলাপ শ্রেণিতে যখন getContext(), getBaseContext() করে প্রসঙ্গটি পেতে পারেন।

অ্যাপ্লিকেশন নিম্নলিখিত যে কোন জায়গায় কনটেক্সট পেতে নিম্নলিখিত কোড ব্যবহার করুন:

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশন ভিতরে নতুন বর্গ AppContext তৈরি করুন

public class AppContext extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        AppContext.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return AppContext.context;
    }
}

এখন যেকোনো সময় আপনি অ-কার্যকলাপ ক্লাসে অ্যাপ্লিকেশন প্রেক্ষাপট চান, এই পদ্ধতিটি কল করুন এবং আপনার কাছে অ্যাপ্লিকেশন প্রসঙ্গ রয়েছে।

এই সাহায্য আশা করি;)


কনটেক্সট একটি অ্যাপ্লিকেশন পরিবেশ সম্পর্কে বিশ্বব্যাপী তথ্য একটি ইন্টারফেস। এটি একটি বিমূর্ত শ্রেণী যার বাস্তবায়ন Android সিস্টেম দ্বারা সরবরাহ করা হয়।

Context অ্যাপ্লিকেশন-নির্দিষ্ট সংস্থান এবং ক্লাসগুলিতে অ্যাক্সেসের অনুমতি দেয়, সেইসাথে অ্যাপ্লিকেশন-স্তরের ক্রিয়াকলাপগুলির জন্য কলগুলি যেমন launching activities, broadcasting and receiving intents, etc. জন্য কল launching activities, broadcasting and receiving intents, etc.

এখানে উদাহরণ

 public class MyActivity extends Activity {

      public void Testing() {

      Context actContext = this; /*returns the Activity Context since   Activity extends Context.*/

      Context appContext = getApplicationContext();    /*returns the context of the single, global Application object of the current process. */

      Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
      Context BtnContext = BtnShowAct1.getContext();   /*returns the context of the View. */

আরো বিস্তারিত জানার জন্য আপনি Context যেতে পারেন


Source

অ্যান্ড্রয়েড এর প্রসঙ্গ প্রসঙ্গ অনেক বিভ্রান্তিকর মনে হচ্ছে। লোকেরা কেবল অ্যান্ড্রয়েডের মৌলিক জিনিসগুলি করার জন্য প্রায়শই বোঝার প্রয়োজন বোধ করে। লোকেরা কখনও কখনও আতঙ্কিত কারণ তারা কিছু ক্রিয়াকলাপ সম্পাদনের চেষ্টা করে যা কনটেক্সট প্রয়োজন এবং তারা সঠিক প্রসঙ্গটি কীভাবে "পেতে" হয় তা জানে না। আমি অ্যান্ড্রয়েড কনটেক্সট ধারণা demystify চেষ্টা করতে যাচ্ছি। এই পোস্টটির সম্পূর্ণ চিকিত্সাটি এই পোস্টের সুযোগের বাইরে, তবে আমি একটি সাধারণ ওভারভিউ দেওয়ার চেষ্টা করব যাতে আপনি কোন প্রসঙ্গটি ব্যবহার করেন এবং কীভাবে এটি ব্যবহার করতে পারেন তা বুঝতে পারেন। প্রসঙ্গটি বোঝার জন্য, আসুন সোর্স কোডটি দেখুন:

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/Context.java

কনটেক্সট ঠিক কি?

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

কনটেক্সট ক্লাস নিজেই বিমূর্ত শ্রেণী হিসাবে ঘোষণা করা হয়, যার বাস্তবায়ন Android OS দ্বারা সরবরাহ করা হয়। ডকুমেন্টেশন আরও তথ্য প্রদান করে যে "... অ্যাপ্লিকেশন-নির্দিষ্ট সংস্থান এবং ক্লাসগুলিতে অ্যাক্সেসের অনুমতি দেয়, পাশাপাশি অ্যাপ্লিকেশন-স্তরের ক্রিয়াকলাপগুলির জন্য আপ-কলগুলি যেমন লঞ্চিং কার্যক্রম, সম্প্রচার এবং অভিপ্রায় প্রাপ্তির ইত্যাদি অনুমতি দেয়।"

আপনি খুব ভাল বুঝতে পারেন, এখন, কেন নাম প্রসঙ্গ। এটা ঠিক কারণ এটা। কনটেক্সটটি যদি লিঙ্কটি বা হুক প্রদান করে তবে আপনি কোনও ক্রিয়াকলাপ, পরিষেবা, বা অন্য কোনও উপাদানের জন্য এটি সিস্টেমকে লিঙ্ক করে, বিশ্বব্যাপী অ্যাপ্লিকেশন পরিবেশে অ্যাক্সেস সক্ষম করতে পারেন। অন্য কথায়: কনটেক্সট উপাদানগুলির প্রশ্নের উত্তর প্রদান করে "যেখানে আমি সাধারণত অ্যাপ্লিকেশানের সাথে সম্পর্কযুক্ত এবং কিভাবে আমি অ্যাপ্লিকেশানের বাকি অংশের সাথে যোগাযোগ / যোগাযোগ করব?" যদি এটি সব কিছু বিভ্রান্তিকর মনে হয় তবে দ্রুত কনটেক্সট ক্লাস দ্বারা উদ্ভূত পদ্ধতিগুলি দেখুন তার প্রকৃত প্রকৃতি সম্পর্কে আরও কিছু সূত্র সরবরাহ করে।

এখানে ঐ পদ্ধতির একটি র্যান্ডম নমুনা:

  1. getAssets()
  2. getResources()
  3. getPackageManager()
  4. getString()
  5. getSharedPrefsFile()

এই সব পদ্ধতি কি সাধারণ আছে? অ্যাপ্লিকেশন-প্রশস্ত সংস্থানগুলি অ্যাক্সেস করতে সক্ষম হওয়া প্রসঙ্গে যে কেউ অ্যাক্সেসের অ্যাক্সেস আছে সেগুলি সকলে সক্ষম করে।

কনটেক্সট, অন্য কথায়, এমন উপাদানটি হুক করে যা এতে বাকি অ্যাপ্লিকেশনের পরিবেশে একটি রেফারেন্স থাকে। সম্পদগুলি (আপনার প্রোজেক্টে মনে করুন '/ সম্পদ' ফোল্ডার), উদাহরণস্বরূপ, অ্যাপ্লিকেশন জুড়ে পাওয়া যায়, তবে কোনও ক্রিয়াকলাপ, পরিষেবা বা কোনও সংস্থানগুলি কীভাবে অ্যাক্সেস করতে হয় তা উপলব্ধি করে। getResources() জন্য একই রকম হয় যা getResources().getColor() যা আপনাকে colors.xml রিসোর্সে colors.xml করবে getResources().getColor() যা colors.xml জাভা কোডের মাধ্যমে সংস্থানগুলিতে অ্যাক্সেস সক্ষম করে না, এটি একটি পৃথক সমস্যা নয়)।

আপসশটটি হল যে Context যা সিস্টেমের সংস্থানগুলিতে অ্যাক্সেস সক্ষম করে এবং "বৃহত্তর অ্যাপ্লিকেশান" এর মধ্যে কোন হুক উপাদানগুলিকে সক্ষম করে। আসুন Context উপশ্রেণীগুলি দেখি, বিন্যাসগুলি শ্রেণীবিন্যাসের বাস্তবায়ন প্রদান করে এমন ক্লাসগুলি। সর্বাধিক সুস্পষ্ট বর্গ Activity ক্লাস। Context থেকে উত্তরাধিকারসূত্রে প্রাপ্ত ContextWrapper থেকে উত্তরাধিকারসূত্রে ContextWrapper , যা Context থেকে উত্তরাধিকারী হয়। এই ক্লাসগুলি গভীরতর পর্যায়ে জিনিসগুলিকে বোঝার জন্য দরকারী, তবে এখন এটি ContextThemeWrapper পক্ষে যথেষ্ট যে ContextThemeWrapper এবং ContextWrapper তারা যা কিছু মত শব্দ। তারা Context ক্লাসের বিমূর্ত উপাদানগুলিকে নিজেই একটি প্রসঙ্গ (প্রকৃত প্রসঙ্গ) এবং সে প্রসঙ্গে সেই ফাংশনগুলিকে প্রতিনিধিত্ব করে তার দ্বারা বাস্তবায়িত করে। উদাহরণস্বরূপ সহায়ক - ContextWrapper ক্লাসে, বিমূর্ত পদ্ধতিটি Context ক্লাস থেকে getAssets নিম্নরূপ প্রয়োগ করা হয়:

@Override
    public AssetManager getAssets() {
        return mBase.getAssets();
    }

mBase কেবল একটি নির্দিষ্ট প্রসঙ্গে mBase দ্বারা একটি ক্ষেত্র সেট। সুতরাং একটি প্রসঙ্গ আবৃত করা হয় এবং ContextWrapper সেই প্রসঙ্গে getAssets পদ্ধতিটির বাস্তবায়ন প্রতিনিধিত্ব করে। চলুন শুরু করি এ্যাক্টিভিটি ক্লাসটি পরীক্ষা করার জন্য যা শেষ পর্যন্ত Context থেকে উত্তরাধিকারসূত্রে উত্তরাধিকার Context করে দেখুন।

আপনি সম্ভবত একটি কার্যকলাপ কি জানেন, কিন্তু পর্যালোচনা করতে - এটি মূলত 'ব্যবহারকারী একটি করতে পারেন এক জিনিস। এটি এমন একটি উইন্ডো প্রদানের যত্ন নেয় যা ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করার UI রাখে। অন্যান্য API এবং এমনকি অ-ডেভেলপারদের সাথে পরিচিত বিকাশকারীগণ এটি স্থানীয়ভাবে "পর্দা" হিসাবে মনে করতে পারে। এটি প্রযুক্তিগতভাবে ভুল, তবে এটি আমাদের উদ্দেশ্যে কোনও ব্যাপার নয়। সুতরাং কিভাবে Activity এবং Context ইন্টারেক্ট এবং তাদের উত্তরাধিকার সম্পর্ক ঠিক কি যাচ্ছে?

আবার, এটি নির্দিষ্ট উদাহরণ তাকান সহায়ক। আমরা সবাই কার্যক্রম আরম্ভ কিভাবে জানি। যদি আপনার "প্রেক্ষাপটে" থেকে আপনি যে কার্যকলাপটি শুরু করছেন, আপনি কেবলমাত্র শুরু অ্যাক্টিভিটি startActivity(intent) , যেখানে অভিপ্রায় প্রসঙ্গটি বর্ণনা করে যার থেকে আপনি কোন কার্যকলাপ শুরু করছেন এবং যে ক্রিয়াকলাপটি আপনি শুরু করতে চান তা বর্ণনা করে। এটি পরিচিত পরিচিতি startActivity(this, SomeOtherActivity.class)

এবং this কি? এটি আপনার কার্যকলাপ কারণ Activity ক্লাস Context থেকে উত্তরাধিকারী। সম্পূর্ণ স্কপ এই রকম: যখন আপনি startActivity কল করেন, অবশেষে Activity শ্রেণীটি এমন কিছু সঞ্চালিত করে:

Instrumentation.ActivityResult ar =
                mInstrumentation.execStartActivity(
                    this, mMainThread.getApplicationThread(), mToken, this,
                    intent, requestCode);

সুতরাং এটি Instrumentation ক্লাস থেকে execStartActivity ব্যবহার করে (প্রকৃতপক্ষে ActivityResult নামক Instrumentation অভ্যন্তরীণ ক্লাস থেকে)।

এই মুহুর্তে, আমরা সিস্টেম অভ্যন্তরীণ একটি peek পেতে শুরু হয়।

এই যেখানে OS আসলে সবকিছু পরিচালনা করে। সুতরাং কিভাবে Instrumentation কার্যকলাপ শুরু ঠিক? আচ্ছা, উপরে এই execStartActivity পদ্ধতিতে execStartActivity আপনার কার্যকলাপ, অর্থাত্ কনটেক্সট, এবং execStartActivity এই প্রসঙ্গে ব্যবহার করে।

একটি 30,000 ওভারভিউ হল: ইন্সট্রুমেন্টেশন ক্লাস এটির কাজ করার জন্য এটি পর্যবেক্ষণ করা ক্রিয়াকলাপগুলির একটি তালিকাগুলির ট্র্যাক রাখে। এই তালিকাটি সমস্ত ক্রিয়াকলাপ সমন্বয় করার জন্য এবং ক্রিয়াকলাপগুলির প্রবাহ পরিচালনার জন্য সবকিছু মসৃণভাবে পরিচালনা করে তা নিশ্চিত করতে ব্যবহার করা হয়।

কিছু অপারেশন আছে যা আমি সম্পূর্ণরূপে কোন সমন্বয় থ্রেড এবং প্রক্রিয়া সমস্যা দেখা যায়নি। অবশেষে, ActivityResult একটি স্থানীয় ActivityResult ব্যবহার করে - ActivityManagerNative.getDefault().startActivity() যা আপনি যখন startActivity তখন আপনি যে Context পাস করেছেন তা ব্যবহার করে। আপনি পাস প্রসঙ্গে প্রয়োজন হলে "উদ্দেশ্য রেজল্যুশন" সাহায্য করার জন্য ব্যবহৃত হয়। ইন্টেন্ট রেজোলিউশন এমন প্রক্রিয়া যার মাধ্যমে এটি সরবরাহ করা না হলে সিস্টেমটি লক্ষ্যের লক্ষ্য নির্ধারণ করতে পারে। (আরো বিস্তারিত জানার জন্য এখানে গাইড দেখুন)।

এবং Android এর জন্য এটি করার জন্য, এটি Context দ্বারা সরবরাহিত তথ্যের অ্যাক্সেসের প্রয়োজন। বিশেষত, সিস্টেমে একটি ContentResolver এ অ্যাক্সেস করতে হবে যাতে এটি "অভিপ্রায় এর ডেটা এর MIME টাইপ নির্ধারণ করতে পারে"। এটি কিভাবে শুরু হয় তার সম্পর্কে এই সমগ্র বিটটি প্রসঙ্গের ব্যবহারটিকে জটিল করে তোলে এবং আমি অভ্যন্তরীণগুলিকে সম্পূর্ণরূপে বুঝতে পারি না। মুখ্য বিন্দুটি কেবলমাত্র অ্যাপ্লিকেশনের জন্য অপরিহার্য ক্রিয়াকলাপগুলি সঞ্চালনের জন্য অ্যাপ্লিকেশন-প্রশস্ত সংস্থানগুলিতে কীভাবে অ্যাক্সেস করা প্রয়োজন তা ব্যাখ্যা করা হয়েছে। Context হল এই সংস্থার অ্যাক্সেস প্রদান করা। একটি সহজ উদাহরণ দৃশ্যমান হতে পারে। আমরা সবাই জানি আপনি RelativeLayout বা অন্য কোনও View ক্লাস প্রসারিত করে একটি কাস্টম ভিউ তৈরি করেন, আপনাকে অবশ্যই একটি কনস্ট্রাক্টর সরবরাহ করতে হবে যা একটি Context হিসাবে যুক্তি গ্রহণ করে। আপনি যখন আপনার কাস্টম ভিউটি তাত্ক্ষণিক করেন তখন আপনি প্রেক্ষাপটে পাস করেন। কেন? ভিউতে সক্ষম হওয়া দরকার থিম, সম্পদ, এবং অন্যান্য অ্যাক্সেসের কনফিগারেশন বিবরণ দেখুন। কনফিগারেশনটি আসলেই একটি দুর্দান্ত উদাহরণ। প্রতিটি কনটেক্সটে বিভিন্ন প্যারামিটার রয়েছে ( Context বাস্তবায়নে ক্ষেত্রগুলি) যা কেবল ওএস দ্বারা সেট করা আছে প্রদর্শন মাত্রা বা ঘনত্ব মত জিনিস। ভিউ, ইত্যাদি স্থাপনের জন্য এই তথ্য কেন গুরুত্বপূর্ণ তা দেখতে সহজ।

এক চূড়ান্ত শব্দ: অ্যান্ড্রয়েডের জন্য যখন কেউ Android এর জন্য নতুন কিছু (এবং এমনকি নতুন নয় এমন লোকেরা) সম্পূর্ণ অবজেক্ট-ভিত্তিক প্রোগ্রামিং সম্পর্কে ভুলে যায়। কিছু কারণে, লোকেরা প্রাক-কল্পনাপ্রসূত প্যাডিজম বা শিখেছি আচরণগুলিতে তাদের Android বিকাশকে বক্র করার চেষ্টা করে।

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

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


অ্যান্ড্রয়েড সিস্টেম এবং android.content.Context সাথে অ্যান্ড্রয়েড সিস্টেম এবং সংস্থার সংস্থানগুলির সংযোগ সরবরাহ করে। এটি অ্যাপ্লিকেশন পরিবেশ সম্পর্কে বিশ্বব্যাপী তথ্য ইন্টারফেস।

প্রসঙ্গটি অ্যান্ড্রয়েড পরিষেবাদিতে অ্যাক্সেস সরবরাহ করে, যেমন অবস্থান পরিষেবা।

ক্রিয়াকলাপ এবং সেবা Context বর্গ প্রসারিত।


প্রসঙ্গটি মূলত সংস্থার অ্যাক্সেসের জন্য এবং অ্যাপ্লিকেশানের পরিবেশের বিবরণ (অ্যাপ্লিকেশনের প্রেক্ষাপটে) বা কার্যকলাপ (কার্যকলাপ প্রসঙ্গের জন্য) বা অন্য কোনওটি পাওয়ার জন্য ...

মেমরি লিক এড়াতে আপনাকে একটি প্রসঙ্গ বস্তুর প্রয়োজন এমন প্রতিটি উপাদানগুলির জন্য অ্যাপ্লিকেশন প্রসঙ্গ ব্যবহার করা উচিত .... আরো জন্য এখানে ক্লিক here


Context ঠিক কি?

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

" অ্যান্ড্রয়েড ইন প্র্যাকটিস " বই থেকে, পি। 60।

বেশ কয়েকটি অ্যান্ড্রয়েড এপিআইগুলির জন্য প্যারামিটার হিসাবে একটি Context প্রয়োজন

আপনি যদি বিভিন্ন Android API গুলির সন্ধান করেন তবে আপনি লক্ষ্য করবেন যে তাদের অনেকেই android.content.Context অবজেক্টটিকে একটি প্যারামিটার হিসাবে গ্রহণ করে। আপনি এটি দেখতে পাবেন যে একটি ক্রিয়াকলাপ বা একটি পরিষেবা সাধারণত একটি Context হিসাবে ব্যবহৃত হয়। এই কাজ উভয় Context থেকে প্রসারিত কারণ এই কাজ করে।


এই বৈশিষ্ট্যটি এই লেআউটটিকে ডিফল্টভাবে যুক্ত করে এমন কার্যকলাপটি ঘোষণা করে ।





android-context