অ্যান্ড্রয়েডে 'প্রসঙ্গ' কী?


1966

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

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


উত্তর:


1506

এটি সহজভাবে বলা:

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

আপনি আবাহন করার মাধ্যমে প্রসঙ্গ পেতে পারেন getApplicationContext(), getContext(), getBaseContext()বা this(যখন একটি বর্গ থেকে প্রসারিত মধ্যে Context, এই ধরনের অ্যাপ্লিকেশন, কার্যকলাপ, সার্ভিস ও IntentService শ্রেণীর হিসাবে)।

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

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

    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, ...);

51
আপনার উদাহরণে context.getSystemService(LAYOUT_INFLATER_SERVICE), কোথায় এবং কীভাবে contextসংজ্ঞায়িত করা হয়েছে?
ডেনিস

8
গতিশীলভাবে একটি পাঠ্য দর্শন তৈরি করার সময় কেন আমাদের প্রসঙ্গের প্রয়োজন তা এটি ভালভাবে ব্যাখ্যা করা হয়েছে। তবে গতিশীলভাবে পাঠ্য দর্শনগুলির অ্যারে তৈরি করার সময় আমাদের কোনও প্রসঙ্গ উল্লেখ করার দরকার নেই। কেন যে এত ? পাঠ্যদর্শন [] পাঠ্যদর্শন = নতুন পাঠ্যদর্শন [10];
অভিনব অরোরা

38
@ অভিনব অরোরা অ্যারের সংজ্ঞা দেওয়ার সময়, আপনি আসলে কোনও পাঠ্য দর্শনের উদাহরণ তৈরি করছেন না (আপনি মূলত কেবল তাদের ভিতরে যাওয়ার জন্য জায়গা তৈরি করছেন)। আপনি যে বিন্যাসে কোনও মান রাখতে এসেছেন সেই মুহুর্তে আপনাকে হয় প্রাক-তৈরি টেক্সটভিউগুলির প্রয়োজন হবে, বা সেগুলি তৈরি করার অনুমতি দেওয়ার জন্য একটি প্রসঙ্গের প্রয়োজন হবে।
mc1arke

24
দর্শনগুলির প্রসঙ্গের প্রয়োজন কেন? উদাহরণস্বরূপ, টেক্সটভিউ এর প্রসঙ্গ না থাকলে কি করতে সক্ষম হবে না?
ডায়নোসর

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

507

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

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

সরল পদ (উদাহরণ 1)

  • পার্সন-এক্স বিবেচনা করুন একটি স্টার্ট-আপ সফ্টওয়্যার সংস্থার প্রধান নির্বাহী কর্মকর্তা।

  • সংস্থায় একটি শীর্ষস্থানীয় আর্কিটেক্ট উপস্থিত রয়েছে, এই শীর্ষস্থানীয় আর্কিটেক্ট কোম্পানির সমস্ত কাজ করে যা ডেটাবেস, ইউআই ইত্যাদি জড়িত company

  • এখন সিইও একটি নতুন বিকাশকারী নিয়োগ দেয়।

  • এটি আর্কিটেক্ট যিনি নতুন ব্যক্তির দক্ষতার উপর ভিত্তি করে নতুন ভাড়া নেওয়া ব্যক্তির দায়িত্ব জানান যে তিনি ডেটাবেস বা ইউআই ইত্যাদিতে কাজ করবেন কিনা tells

সরল পদ (উদাহরণ 2)

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

  • এটি যখন আপনি কোনও হোটেল পরিদর্শন করেন ঠিক তখনই আপনি উপযুক্ত সময়টিতে প্রাতঃরাশ, মধ্যাহ্নভোজন এবং ডিনার চান?

  • থাকার সময় আপনার পছন্দ মতো আরও অনেক জিনিস রয়েছে। এই জিনিসগুলি আপনি কীভাবে পাবেন?

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

  • এখানে রুম-সার্ভিসের ব্যক্তি হ'ল আপনি একক ক্রিয়াকলাপ এবং হোটেলটিকে আপনার অ্যাপ হিসাবে বিবেচনা করে প্রসঙ্গ, অবশেষে প্রাতঃরাশ, মধ্যাহ্নভোজন এবং রাতের খাবারের সংস্থান হতে হবে।


প্রসঙ্গ জড়িত জিনিসগুলি হ'ল:

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

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

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

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

  • তেমনি ... যার প্রত্যন্তর স্বাভাবিকভাবে অ্যাক্সেস রয়েছে তার সম্পদ, পরিষেবা, অভিপ্রায় ইত্যাদি ব্যবহারের মতো সমস্ত কিছুতে অ্যাক্সেস রয়েছে


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

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • বা this(যখন কার্যকলাপ শ্রেণিতে)

উদাহরণ:

TextView tv = new TextView(this);

শব্দ thisবর্তমান কার্যকলাপ প্রেক্ষাপটে বোঝায়।


3
ঠিক আছে, তাই ক্রিয়াকলাপ থেকে উত্পন্ন ক্লাসটি নিজেই একটি প্রসঙ্গ। এজন্যই সদ্য তৈরি হওয়া দর্শনে এটি পাস করে আমরা প্রসঙ্গটি পাস করি।
0

7
আমি অবাক হই যে এতগুলি বিভিন্ন জায়গা থেকে প্রসঙ্গটি অ্যাক্সেসযোগ্য হওয়া কি কোনও ভাল ডিজাইনের সিদ্ধান্ত? আবেদনের মধ্যে একটি স্থিতিশীল getContext () আমার মতে যথেষ্ট হবে।
Trilarion

@Trilarion ... এটা কিভাবে আপনি প্রসঙ্গ ব্যবহার করতে চান তার উপর নির্ভর করে getApplicationContext(), getContext(), getBaseContext()..... এই পড়ুন -> ( stackoverflow.com/a/10641257 )
Devrath

একটি পাঠ্যদর্শন তৈরি করে কেবল শেষ টুকরোটি প্রসারিত করতে: কিছু ক্ষেত্রে কল করার প্রয়োজন হতে পারে SomeActivityName.this। উদাহরণস্বরূপ একটি থ্রেডে, thisএটি তেহ থ্রেডকে নির্দেশ করে এবং ক্রিয়াকলাপ নয়
জো

1
কোনও এপেকে বা অ্যান্ড্রয়েড ওএসের জন্য কনটেক্সট অবজেক্টটি কী অনন্য? একটি অ্যাপ্লিকেশন দুটি পৃথক প্রসঙ্গ থাকতে পারে?
ভালিজোন

366

সূত্র


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

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

প্রসঙ্গটি আসলে কী?

ঠিক আছে, ডকুমেন্টেশন নিজেই একটি বরং সরল ব্যাখ্যা সরবরাহ করে: প্রসঙ্গ শ্রেণিটি একটি "একটি অ্যাপ্লিকেশন পরিবেশ সম্পর্কে বিশ্বব্যাপী তথ্যের ইন্টারফেস"।

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

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

এই পদ্ধতিগুলির একটি এলোমেলো নমুনা এখানে:

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

এই সমস্ত পদ্ধতিতে কী মিল রয়েছে? এগুলি সমস্ত প্রবন্ধে যার কাছে অ্যাক্সেস রয়েছে সেগুলি অ্যাপ্লিকেশন-বিস্তৃত সংস্থানগুলিতে অ্যাক্সেস করতে সক্ষম করে।

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

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

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

mBaseকেবল একটি নির্দিষ্ট প্রসঙ্গে নির্মাণকারী দ্বারা নির্ধারিত ক্ষেত্র। সুতরাং একটি প্রসঙ্গটি মোড়ানো হয় এবং ContextWrapperতার প্রসঙ্গে getAssets পদ্ধতিটি প্রয়োগের প্রতিনিধিত্ব করে। এই Activityক্লাসটি Contextকীভাবে কাজ করে তা শেষ পর্যন্ত উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসটি পরীক্ষা করে ফিরে আসি ।

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

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

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

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

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

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

এখানেই ওএস প্রকৃতপক্ষে সবকিছু পরিচালনা করে। তাহলে ইনস্ট্রুমেন্টেশন কীভাবে কার্যকলাপ শুরু করে? ওয়েল, PARAM thisমধ্যে execStartActivityপদ্ধতি উপরে আপনার কার্যকলাপ, অর্থাত কনটেক্সট, এবং execStartActivityতোলে এই প্রেক্ষাপটে ব্যবহার।

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

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

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

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

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

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


33
এটি একটি দুর্দান্ত উত্তর। স্বীকৃত ব্যক্তির চেয়ে অনেক বেশি ভাল, যা কেবল প্রত্যেকে যা স্বজ্ঞাতভাবে জানে তা কেবল বলে।
হনজা কালফাস

5
এটি আপনি যে দীর্ঘ উত্তরটির সন্ধান করছেন! ভালভাবে ব্যাখ্যা করা হয়েছে
নিক জিয়ান

4
দুর্দান্ত উত্তর! সিরিয়াসলি!
zeekhuge

3
হুম, আমার কাছে এগুলি সমস্ত শোনাচ্ছে যা আমরা পুরানো টাইমাররা গ্লোবাল ভেরিয়েবল বলে থাকতাম, যা বস্তু ওরিয়েন্টেশন দৃশ্যে
ভ্রান্ত হয়েছিল

সুতরাং আমি getApplicationContext থেকে প্রসঙ্গটি পেয়েছি এটি কী ক্রিয়াকলাপের মধ্যে getContext এর সমান?
জেপিএম

119

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

আরও তথ্যের জন্য, অ্যান্ড্রয়েড স্টুডিও - টিউটোরিয়াল দিয়ে অ্যান্ড্রয়েড বিকাশের পরিচিতি দেখুন ।


88

Contextঅ্যাপ্লিকেশন পরিবেশ সম্পর্কে বিশ্বব্যাপী তথ্যের একটি "ইন্টারফেস" is Contextবাস্তবে , আসলে একটি বিমূর্ত শ্রেণি , যার বাস্তবায়ন অ্যান্ড্রয়েড সিস্টেম সরবরাহ করে।

এটি অ্যাপ্লিকেশন-নির্দিষ্ট সংস্থান এবং ক্লাসগুলির অ্যাক্সেসের পাশাপাশি অ্যাপ্লিকেশন-স্তরের ক্রিয়াকলাপগুলির জন্য আপ-কলগুলি যেমন কার্যক্রম শুরু করা, সম্প্রচার এবং উদ্দেশ্য গ্রহণ করা ইত্যাদির অনুমতি দেয় etc.

নিম্নলিখিত ছবিতে, আপনি ক্লাসের একটি শ্রেণিবিন্যাস দেখতে পাচ্ছেন, যেখানে Contextএই শ্রেণিবিন্যাসের মূল শ্রেণি রয়েছে। বিশেষত, এটির Activityএকটি বংশধর এটি জোর দেওয়া উচিত Context

ক্রিয়াকলাপ ডায়াগ্রাম


কিভাবে এই ছবি উত্পন্ন?
d0ye

70

Contextঠিক কি ?

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

" অনুশীলন মধ্যে অনুশীলন " বই থেকে, পি। 60।

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

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


52

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

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

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

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

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

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

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

কিছু ক্রিয়াকলাপ (সহায়তার প্রয়োজন এমন জিনিসগুলি) যেখানে প্রসঙ্গ জড়িত:

  • সাধারণ সম্পদ লোড হচ্ছে
  • গতিশীল দর্শন তৈরি করা হচ্ছে
  • টোস্ট বার্তা প্রদর্শন করা হচ্ছে
  • কার্যক্রম চালু করা ইত্যাদি

প্রসঙ্গ পাওয়ার বিভিন্ন উপায়:

getContext()

getBaseContext()

getApplicationContext()

this

47

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

যদি আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি একটি ওয়েব অ্যাপ্লিকেশন ছিল তবে আপনার প্রসঙ্গটি এর সাথে মিলিয়ে কিছু হবে ServletContext (আমি এখানে একটি সঠিক তুলনা করছি না)।

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


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

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

  • সংস্থান লোড হচ্ছে।
  • একটি নতুন ক্রিয়াকলাপ চালু করা হচ্ছে।
  • ভিউ তৈরি করা হচ্ছে।
  • সিস্টেম পরিষেবা প্রাপ্তি।

প্রসঙ্গ পাওয়ার উপায়:

  • getApplicationContext()
  • getContext()
  • getBaseContext()এখানে চিত্র বর্ণনা লিখুনএখানে চিত্র বর্ণনা লিখুন

18

সবেমাত্র নতুনদের জন্য এটি রেখে দেওয়া;

সুতরাং প্রথমে শব্দ প্রসঙ্গে বুঝতে:

ইংলিশ-লাইব ইন এর অর্থ:

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

"লিখিত বা কথিত কোনও কিছুর অংশগুলি তাৎক্ষণিকভাবে একটি শব্দ বা উত্তরণের আগে চলে এবং এর অর্থ ব্যাখ্যা করে।"

এখন প্রোগ্রামিং ওয়ার্ল্ডে একই বোঝাপড়া নিন:

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

আপনি আবাহন করার মাধ্যমে প্রসঙ্গ পেতে পারেন getApplicationContext(), getContext(), getBaseContext()অথবা this(যখন কার্যকলাপ ক্লাসে)।

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

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;
    }
}

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

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


17

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


17

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


13

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

প্রসঙ্গটি অ্যান্ড্রয়েড পরিষেবাগুলিতে অ্যাক্সেস সরবরাহ করে, যেমন লোকেশন পরিষেবা।

ক্রিয়াকলাপ এবং পরিষেবাগুলি বর্ধিত করে Context


9

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

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

প্রসঙ্গ শ্রেণিটি অ্যান্ড্রয়েড পরিষেবাগুলিতে অ্যাক্সেসও সরবরাহ করে, যেমন, সময় ভিত্তিক ইভেন্টগুলি ট্রিগার করার জন্য অ্যালার্ম পরিচালক।

ক্রিয়াকলাপ এবং পরিষেবাগুলি প্রসঙ্গ শ্রেণিটি প্রসারিত করে। সুতরাং এগুলি প্রসঙ্গে প্রবেশ করতে সরাসরি ব্যবহার করা যেতে পারে।


9

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

Context অ্যাপ্লিকেশন-নির্দিষ্ট সংস্থান এবং ক্লাসে অ্যাক্সেসের পাশাপাশি অ্যাপ্লিকেশন-স্তরের ক্রিয়াকলাপগুলিতে যেমন কল 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. */

আরও তথ্যের জন্য আপনি http://developer.android.com/references/android/content/Context.html দেখতে পারেন


8

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

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


8

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

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

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


7

প্রসঙ্গটি হ'ল অ্যান্ড্রয়েডটি জানতে পারে যে আমার কোন ক্রিয়াকলাপে যাওয়া উচিত বা এতে কাজ করা উচিত।

1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show(); এটি এটি ব্যবহৃত। Context context = ActivityName.this;

2 -startActivity(new Intent(context,LoginActivity.class));

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


6

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

একটি বিষয়বস্তুতে রয়েছে অনেকগুলি ক্রিয়াকলাপ, প্রতিটি ক্রিয়াকলাপে অনেকগুলি ভিউ থাকতে পারে।

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


6

বস সহকারী অ্যানালজি

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

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

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

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

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

আসুন এরকম কিছু সংস্থান বা কাজ দেখুন

  • একটি ক্রিয়াকলাপ শুরু হচ্ছে।

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

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

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

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

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


মাথা আপ @dssa জন্য ধন্যবাদ আমি অ্যান্ড্রয়েড ডক্সের সংক্ষিপ্তসার সরবরাহ করার চেষ্টা করছিলাম .. শোল্ক আরও যত্নবান হয়েছে। "অনুলিপি করা" অংশটি সরানো হয়েছে
রোহিত সিং

5

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

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

প্রসঙ্গ শ্রেণিটি অ্যান্ড্রয়েড পরিষেবাগুলিতে অ্যাক্সেসও সরবরাহ করে, যেমন, সময় ভিত্তিক ইভেন্টগুলি ট্রিগার করার জন্য অ্যালার্ম পরিচালক।

ক্রিয়াকলাপ এবং পরিষেবাগুলি প্রসঙ্গ শ্রেণিটি প্রসারিত করে। সুতরাং এগুলি প্রসঙ্গে প্রবেশ করতে সরাসরি ব্যবহার করা যেতে পারে।


4

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

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

প্রসঙ্গ <ContextWrapper <ContextThemeWrapper <কার্যকলাপ

প্রসঙ্গ <ContextWrapper <ContextThemeWrapper <Activity <listActivity

প্রসঙ্গ <ContextWrapper <পরিষেবা

প্রসঙ্গ <কনটেক্সট র‍্যাপার <পরিষেবা <ইনটেন্ট সার্ভিস

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

আমি এখানে প্রসঙ্গে পার্থক্য ব্যাখ্যা করছি


4

সহজ Contextকথায় বলতে গেলে , অ্যান্ড্রয়েডগুলি এমন একটি জগাখিচুড়ি যা আপনি যতক্ষণ না চিন্তিত হওয়া অবধি পছন্দ করবেন না।

অ্যান্ড্রয়েড Contextগুলি হ'ল:

  • আল্লাহর অবজেক্ট।

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

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

    • মেমরি ফাঁসের সাধারণ উত্স।

    • পরীক্ষার জন্য পি.আই.টি.এ.

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


4

প্রসঙ্গটি হ'ল প্রতিটি অ্যাপ্লিকেশন-এর স্যান্ডবক্সের অ্যান্ড্রয়েড নির্দিষ্ট এপিআই যা অ্যাক্সেস অ্যাপ্লিকেশনটিকে ব্যক্তিগত ডেটা যেমন রিসোর্স, ডাটাবেস, প্রাইভেট ফাইল ডিরেক্টরিগুলি, পছন্দসমূহ, সেটিংস ...

একটি অ্যাপ্লিকেশনটির সমস্ত ক্রিয়াকলাপ / পরিষেবা / সম্প্রচারকারীদের জন্য বেশিরভাগ প্রাইভেটেডটা একই ata

যেহেতু অ্যাপ্লিকেশন, ক্রিয়াকলাপ, পরিষেবা কনটেক্সট ইন্টারফেস প্রয়োগ করে যেখানে এপিআই কলটির প্রসঙ্গ পরামিতি প্রয়োজন সেখানে তারা ব্যবহার করা যেতে পারে


4

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

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

দ্রষ্টব্য: <application>সমস্ত অ্যান্ড্রয়েড উপাদান ধারণ করে।

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

    <service>  .. </service>

    <receiver> .. </receiver>

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

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

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


1

প্রসঙ্গটি বিভিন্ন সংস্থান সহ একটি বাক্স হিসাবে ভাবেন: স্ট্রিং, রঙ এবং ফন্ট। আপনার যদি কোনও সংস্থান দরকার হয় তবে আপনি এই বাক্সটিতে ফিরে যান। আপনি যখন স্ক্রিনটি ঘোরান, তখন এই বাক্সটি বদলে যায় কারণ ওরিয়েন্টেশনটি ল্যান্ডস্কেপে পরিবর্তিত হয়।


0

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

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

0

দুর্দান্ত ব্যাখ্যা! উপরের সমস্ত বিষয়গুলির পরিপূরক হিসাবে, আমি মাইন্ডঅর্কস থেকে এটিকে একটি খুব সহায়ক বলে মনে করেছি, এমনকি আপনার মনটি চালিয়ে যাওয়ার জন্য কিছু প্রাথমিক ব্যবহারের কেস দেখায়:

অ্যান্ড্রয়েড অ্যাপ্লিকেশনে প্রসঙ্গ বোঝা


-7

জাভাতে, আমরা বলি যে এই কীওয়ার্ডটি প্রয়োগের বর্তমান অবজেক্টের অবস্থা বোঝায় to
একইভাবে, একটি বিকল্পে আমাদের Contextঅ্যান্ড্রয়েড বিকাশ রয়েছে।

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

Context con = this;

getApplicationContext();

getBaseContext();

getContext();

আমি মনে করি বর্তমান ক্রিয়াকলাপের কেবল অবজেক্ট হতে পারে। আমি এটি ব্যবহার করে যেমন এটি কয়েকবার এইভাবে ছিল।
ওহিওর

1
প্রসঙ্গ পাওয়ার জন্য বিভিন্ন ধরণের উপায় রয়েছে। কলিং thisকেবল কার্যক্রমে কাজ করে। প্রসঙ্গটি "এই" - এর বিকল্প নয় - প্রসঙ্গটি সিস্টেম বৈশিষ্ট্যগুলি অ্যাক্সেস করতে এবং আরও অনেক কিছুতে ব্যবহৃত হয়। আপনি প্রসঙ্গটি অতি-সরল করছেন এবং এর সাথে মূল পয়েন্টটি মিস করছেন।
জো

-10

এই বৈশিষ্ট্য ঘোষণা যা কার্যকলাপ এই লেআউটটি সঙ্গে যুক্ত করা হয় ডিফল্টরূপে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.