ඇන්ඩ්රොයිඩ් ක්රමලේඛනයේදී, Context
පංතියක් යනු කුමක්ද සහ එය භාවිතා කරන්නේ කුමක් සඳහාද?
මම ඒ ගැන සංවර්ධක අඩවියේ කියවූ නමුත් මට එය පැහැදිලිව තේරුම් ගත නොහැක.
ඇන්ඩ්රොයිඩ් ක්රමලේඛනයේදී, Context
පංතියක් යනු කුමක්ද සහ එය භාවිතා කරන්නේ කුමක් සඳහාද?
මම ඒ ගැන සංවර්ධක අඩවියේ කියවූ නමුත් මට එය පැහැදිලිව තේරුම් ගත නොහැක.
Answers:
සරලව කිවහොත්:
නමට අනුව, එය යෙදුමේ / වස්තුවේ වත්මන් තත්වයේ සන්දර්භයයි. අලුතින් සාදන ලද වස්තූන් හට සිදුවෙමින් පවතින දේ තේරුම් ගැනීමට එය ඉඩ දෙයි. සාමාන්යයෙන් ඔබ එය අමතන්නේ ඔබේ වැඩසටහනේ තවත් කොටසක් (ක්රියාකාරකම් සහ පැකේජ / යෙදුම) පිළිබඳ තොරතුරු ලබා ගැනීම සඳහා ය.
ඔබ සන්දර්භය යොදාගැනීම මගින් ලබා ගත හැක getApplicationContext()
, getContext()
, getBaseContext()
හෝ this
(විට දක්වා ඇති පන්ති දී Context
, එවැනි යෙදුම්, ක්රියාකාරකම, සේවා සහ IntentService පන්ති වැනි) ඒ අතර වේ.
සන්දර්භයෙහි සාමාන්ය භාවිතයන්:
නව වස්තු නිර්මාණය කිරීම: නව දර්ශන, ඇඩප්ටර, සවන්දෙන්නන් නිර්මාණය කිරීම:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
සම්මත පොදු සම්පත් වෙත ප්රවේශ වීම : LAYOUT_INFLATER_SERVICE, SharedPreferences වැනි සේවාවන්:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
ව්යංගයෙන් සංරචක වෙත ප්රවේශ වීම : අන්තර්ගත සපයන්නන්, විකාශන, අභිප්රාය සම්බන්ධයෙන්
getApplicationContext().getContentResolver().query(uri, ...);
context.getSystemService(LAYOUT_INFLATER_SERVICE)
, context
අර්ථ දැක්වෙන්නේ කොහේද සහ කෙසේද ?
ආරම්භක මෘදුකාංග සමාගමක ප්රධාන විධායක නිලධාරියා වන්නේ පුද්ගල-එක්ස් ය.
සමාගම තුළ ඊයම් ගෘහ නිර්මාණ ශිල්පියෙකු සිටින අතර, මෙම ඊයම් ගෘහ නිර්මාණ ශිල්පියා සමාගමේ සියලු කටයුතු කරන්නේ දත්ත සමුදාය, යූඅයි යනාදියයි.
දැන් ප්රධාන විධායක නිලධාරී නව සංවර්ධකයෙකු බඳවා ගනී.
දත්ත සමුදාය හෝ යූඅයි යනාදියෙහි වැඩ කරන්නේද යන්න නව පුද්ගලයාගේ කුසලතා මත පදනම්ව අලුතින් කුලියට ගත් පුද්ගලයාගේ වගකීම ගෘහ නිර්මාණ ශිල්පියා පවසයි.
එය ඇන්ඩ්රොයිඩ් ක්රියාකාරකම් යෙදුමේ සම්පතට ප්රවේශ වීම වැනි ය.
එය ඔබ හෝටලයකට ගිය විට සමාන වේ, ඔබට උදේ ආහාරය, දිවා ආහාරය සහ රාත්රී ආහාරය සුදුසු වේලාවට අවශ්යයි නේද?
රැඳී සිටින කාලය තුළ ඔබ කැමති තවත් බොහෝ දේ ඇත. ඔබ මේවා ලබා ගන්නේ කෙසේද?
කාමර සේවා පුද්ගලයාගෙන් ඔබ ඉල්ලා සිටින්නේ මේ දේවල් ඔබ වෙනුවෙන් ගෙන එන ලෙසයි.
මෙහි කාමර-සේවා පුද්ගලයා යනු ඔබ තනි ක්රියාකාරකමක් සහ හෝටලය ඔබේ යෙදුම ලෙස සලකන සන්දර්භයයි, අවසානයේ උදේ ආහාරය, දිවා ආහාරය සහ රාත්රී ආහාරය සම්පත් විය යුතුය.
සන්දර්භය හා සම්බන්ධ කරුණු:
මෙය විස්තර කළ හැකි තවත් ක්රමයක්: රූපවාහිනියේ සහ නාලිකාවක දුරස්ථව සන්දර්භය සලකා බලන්න සම්පත්, සේවා, අභිප්රායන් භාවිතා කිරීම යනාදිය - - - මෙහිදී දුරස්ථව ක්රියා කරන්නේ විවිධ සම්පත් වෙත පෙරට පිවිසීමට ප්රවේශයක් වශයෙනි.
එබැවින් දුරස්ථව සම්පත්, සේවා, අභිප්රායන් භාවිතා කිරීම වැනි නාලිකා වලට ප්රවේශය ඇත ....
ඒ හා සමානව ... දුරස්ථව පිවිසෙන ඕනෑම කෙනෙකුට ස්වාභාවිකවම සම්පත්, සේවා, අභිප්රාය භාවිතා කිරීම වැනි සියලු දේ සඳහා ප්රවේශය ඇත
ඔබට සන්දර්භය ලබා ගත හැකි විවිධ ක්රම
getApplicationContext()
getContext()
getBaseContext()
this
(ක්රියාකාරකම් පන්තියේ සිටින විට)උදාහරණයක්:
TextView tv = new TextView(this);
මූලික පදය this
වර්තමාන ක්රියාකාරිත්වයේ සන්දර්භය වෙත යොමු වේ.
getApplicationContext()
, getContext()
, getBaseContext()
..... මේ බලන්න -> ( stackoverflow.com/a/10641257 )
SomeActivityName.this
. නිදසුනක් සඳහා ත්රෙඩ් එකක this
සඳහන් වන්නේ ටෙහ් නූල් මිස ක්රියාකාරකම නොවේ
ඇන්ඩ්රොයිඩ් හි සන්දර්භය යන මාතෘකාව බොහෝ දෙනෙකුට ව්යාකූල බවක් පෙනේ. ඇන්ඩ්රොයිඩ් හි මූලික දේ කිරීමට සන්දර්භය බොහෝ විට අවශ්ය බව ජනතාව දනිති. සමහර විට මිනිසුන් භීතියට පත්වන්නේ ඔවුන් සන්දර්භය අවශ්ය වන යම් මෙහෙයුමක් කිරීමට උත්සාහ කරන නිසා සහ නිවැරදි සන්දර්භය “ලබා ගන්නේ” කෙසේදැයි නොදන්නා බැවිනි. මම ඇන්ඩ්රොයිඩ් හි සන්දර්භය පිළිබඳ අදහස අවලංගු කිරීමට උත්සාහ කරමි. ගැටලුව පිළිබඳ පූර්ණ ප්රතිකාරයක් මෙම ලිපියේ විෂය පථයෙන් ඔබ්බට ය, නමුත් සන්දර්භය යනු කුමක්ද සහ එය භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ අවබෝධයක් ලබා ගැනීම සඳහා මම සාමාන්ය දළ විශ්ලේෂණයක් ලබා දීමට උත්සාහ කරමි. සන්දර්භය යනු කුමක්දැයි වටහා ගැනීමට, අපි ප්රභව කේතය දෙස බලමු:
සන්දර්භය යනු කුමක්ද?
හොඳයි, ප්රලේඛනය විසින්ම තරමක් සරල පැහැදිලි කිරීමක් සපයයි: සන්දර්භය පන්තිය යනු “යෙදුම් පරිසරයක් පිළිබඳ ගෝලීය තොරතුරු සඳහා අතුරු මුහුණතක්” වේ.
සන්දර්භය පන්තියම වියුක්ත පන්තියක් ලෙස ප්රකාශයට පත් කර ඇති අතර, එය ක්රියාත්මක කිරීම ඇන්ඩ්රොයිඩ් මෙහෙයුම් පද්ධතිය විසින් සපයනු ලැබේ. සන්දර්භය “… යෙදුම්-විශේෂිත සම්පත් සහ පංති වෙත ප්රවේශ වීමට ඉඩ සලසයි, එසේම ක්රියාකාරකම් දියත් කිරීම, විකාශනය කිරීම සහ ලැබීමේ අභිප්රායන් වැනි යෙදුම් මට්ටමේ මෙහෙයුම් සඳහා ඉහළ ඇමතුම් ලබා ගැනීමට ඉඩ සලසයි.
දැන් ඔබට සන්දර්භය යන නම හොඳට තේරුම් ගත හැකිය. ඒ එය එසේ වන බැවිනි. සන්දර්භය මඟින් ඔබට ක්රියාකාරකමක්, සේවාවක් හෝ වෙනත් ඕනෑම අංගයක් සඳහා සබැඳිය හෝ කොක්ක ලබා දෙයි, එමඟින් එය පද්ධතියට සම්බන්ධ කරමින් ගෝලීය යෙදුම් පරිසරයට ප්රවේශ වීමට ඉඩ සලසයි. වෙනත් වචන වලින් කිවහොත්: “සාමාන්යයෙන් යෙදුමට සාපේක්ෂව මා සිටින්නේ කොහේද සහ අනෙක් යෙදුමට ප්රවේශ වන්නේ / සන්නිවේදනය කරන්නේ කෙසේද?” යන සංරචක ප්රශ්නයට සන්දර්භය සපයයි. මේ සියල්ල මඳක් ව්යාකූල බවක් පෙනේ නම්, සන්දර්භය පන්තිය විසින් නිරාවරණය කරන ලද ක්රම දෙස ඉක්මණින් බැලීමෙන් එහි සත්ය ස්වභාවය පිළිබඳ තවත් ඉඟි කිහිපයක් සපයයි.
මෙන්න එම ක්රමවල අහඹු නියැදියක්:
getAssets()
getResources()
getPackageManager()
getString()
getSharedPrefsFile()
මෙම සියලු ක්රමවලට පොදු වන්නේ කුමක්ද? ඒවා සියල්ලම සන්දර්භය වෙත ප්රවේශය ඇති ඕනෑම කෙනෙකුට යෙදුම්-පුළුල් සම්පත් වෙත ප්රවේශ වීමට හැකි වේ.
සන්දර්භය, වෙනත් වචන වලින් කිවහොත්, එය යොමුව ඇති සංරචකය සෙසු යෙදුම් පරිසරයට සම්බන්ධ කරයි. නිදසුනක් ලෙස, ක්රියාකාරකමක්, සේවාවක් හෝ එම සම්පත් වෙත ප්රවේශ වන්නේ කෙසේදැයි දන්නා ඕනෑම දෙයක් ලබා දී ඇති වත්කම් (ඔබේ ව්යාපෘතියේ ඇති '/ වත්කම්' ෆෝල්ඩරය) යෙදුම හරහා ලබා ගත හැකිය. ඔබව සම්බන්ධ getResources()
කරවන දේවල් කිරීමට අපට ඉඩ සලසන එකම දෙය එයයිgetResources().getColor()
colors.xml
සම්පත් (මතක් කරන්නවත් එපා aapt වෙනම ප්රශ්නයක් බව ජාවා කේතය, හරහා සම්පත් සඳහා ප්රවේශය හැකියාව බව).
ගලගොඩඅත්තේ ඥාණසාර හිමි ත්රස්තවාදියෙක් බව ය Context
ඇති "වැඩි යෙදුම" බවට පද්ධති සම්පත් සහ එහි දේ කොක්කෙන් සංරචක ප්රවේශ හැකියාව කුමක්ද. යන උප වර්ගිකරණයන් දී එහෙනම් අපි පෙනුම Context
වියුක්ත ක්රියාත්මක කිරීම ලබා දෙන පන්ති, Context
පන්තියේ. වඩාත් පැහැදිලි පන්ති ය Activity
පන්තියේ. Activity
අනුන සිට ContextThemeWrapper
, අනුන සිට ContextWrapper
කුමන අනුන, Context
අය පන්ති ගැඹුරු මට්ටමේ දේවල් තේරුම් ගැනීමට දෙස ප්රයෝජනවත් වේ ම., නමුත් දැන්, ඒක බව දැන ගැනීමට ප්රමාණවත් වේ ContextThemeWrapper
හා ContextWrapper
ඔවුන් වගේ දේ එච්චරමයි වේ. ඔවුන් යන වියුක්ත අංග ක්රියාත්මක මෙම Context
. "ඔතන" සන්දර්භය (සැබෑ තත්ත්වය) සහ එම සන්දර්භය එම කාර්යයන් පැවරීම විසින් පන්තිය ම උදාහරණයක් ප්රයෝජනවත් වේ - දීContextWrapper
පන්තිය, වියුක්ත ක්රමය getAssets
දක්වා Context
පන්ති පහත සඳහන් පරිදි ක්රියාත්මක වේ:
@Override
public AssetManager getAssets() {
return mBase.getAssets();
}
mBase
යනු හුදෙක් නිශ්චිත සන්දර්භයකට ඉදිකිරීම්කරු විසින් කරන ලද ක්ෂේත්ර කට්ටලයකි. එබැවින් සන්දර්භයක් ඔතා ඇති ContextWrapper
අතර එය getAssets ක්රමය ක්රියාත්මක කිරීම එම සන්දර්භය වෙත පවරයි. මේ සියල්ල ක්රියාත්මක වන්නේ කෙසේදැයි බැලීමට Activity
අවසානයේදී උරුම වන පන්තිය පරීක්ෂා Context
කර බලමු.
ක්රියාකාරකමක් යනු කුමක්දැයි ඔබ බොහෝ විට දන්නා නමුත් සමාලෝචනය කිරීම - එය මූලික වශයෙන් 'පරිශීලකයාට කළ හැකි තනි දෙයකි. පරිශීලකයා සමඟ අන්තර්ක්රියා කරන UI ස්ථානගත කිරීම සඳහා කවුළුවක් සැපයීම ගැන සැලකිලිමත් වේ. වෙනත් ඒපීඅයි ගැන හුරුපුරුදු සංවර්ධකයින් සහ සංවර්ධකයින් නොවන අය පවා එය වාචිකව “තිරයක්” ලෙස සිතිය හැකිය. එය තාක්ෂණික වශයෙන් සාවද්ය ය, නමුත් එය අපගේ අරමුණු සඳහා වැදගත් නොවේ. ඉතින් කෙසේද Activity
සහ Context
ක්රියා කරන්නේ කෙසේද සහ ඔවුන්ගේ උරුම සම්බන්ධතාවයේ හරියටම සිදුවන්නේ කුමක්ද?
නැවතත්, විශේෂිත උදාහරණ බැලීම ප්රයෝජනවත් වේ. ක්රියාකාරකම් දියත් කරන්නේ කෙසේදැයි අපි කවුරුත් දනිමු. ඔබ ක්රියාකාරකම ආරම්භ කරන “සන්දර්භය” ඔබ සතුව තිබේ නම්, ඔබ හුදෙක් අමතන්න startActivity(intent)
, එහිදී ඔබ ක්රියාකාරකමක් ආරම්භ කරන සන්දර්භය සහ ඔබ ආරම්භ කිරීමට කැමති ක්රියාකාරකම අදහස් කරයි. මෙය හුරුපුරුදු ය 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
අතර එමඟින් “අභිප්රායයේ දත්තවල MIME වර්ගය තීරණය කළ හැකිය”. startActivity
සන්දර්භය භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ මේ සමස්ත විස්තරය මඳක් සංකීර්ණ වූ අතර අභ්යන්තරය මට මුළුමනින්ම නොතේරේ. මගේ ප්රධාන කරුණ යෙදුමකට අත්යවශ්ය වන බොහෝ මෙහෙයුම් සිදු කිරීම සඳහා යෙදුම්-පුළුල් සම්පත් වෙත ප්රවේශ විය යුතු ආකාරය නිදර්ශනය කිරීම පමණි.මෙම සම්පත් Context
සඳහා ප්රවේශය සපයන්නේ එයයි.සමහර උදාහරණය දසුන් විය හැකිය.ඔබ නිර්මාණය කරන දේ අපි කවුරුත් දනිමු අභිරුචි දසුන විස්තාරණය කිරීමෙන් RelativeLayout
හෝ වෙනත් View
පන්තියකින්, ඔබ විසින් ඉදිකිරීම්කරුවෙකු ලබා දිය යුතුයContext
තර්කයක් ලෙස. ඔබගේ අභිරුචි දර්ශනය ඔබ ක්ෂණිකව ක්රියාත්මක කරන විට ඔබ සන්දර්භය තුළ සමත් වේ. මන්ද? දර්ශනයට තේමාවන්, සම්පත් සහ වෙනත් දර්ශන වින්යාස තොරතුරු වෙත ප්රවේශය තිබිය යුතු බැවිනි. දර්ශන වින්යාසය සැබවින්ම විශිෂ්ට උදාහරණයකි. සෑම සන්දර්භයකම විවිධ පරාමිතීන් ( Context
ක්රියාත්මක කිරීමේ ක්ෂේත්ර ) ඇත, ඒවා මෙහෙයුම් පද්ධතිය විසින්ම දර්ශනයේ මානය හෝ ity නත්වය වැනි දේ සඳහා සකසා ඇත. දසුන් ආදිය සැකසීමට මෙම තොරතුරු වැදගත් වන්නේ මන්දැයි බැලීම පහසුය.
එක් අවසාන වචනයක්: කිසියම් හේතුවක් නිසා, ඇන්ඩ්රොයිඩ් වෙත නව පුද්ගලයින් (සහ එතරම් අලුත් නොවන අය පවා) ඇන්ඩ්රොයිඩ් වෙත පැමිණෙන විට වස්තු-නැඹුරු වැඩසටහන්කරණය සම්පූර්ණයෙන්ම අමතක කරන බවක් පෙනේ. කිසියම් හේතුවක් නිසා, මිනිසුන් ඔවුන්ගේ ඇන්ඩ්රොයිඩ් සංවර්ධනය පූර්ව සංකල්පිත උපමා හෝ උගත් හැසිරීම් වලට නැමීමට උත්සාහ කරයි.
ඇන්ඩ්රොයිඩ් සතුව එයටම ආදර්ශයක් සහ යම් රටාවක් ඇත, එය ඔබගේ පූර්ව නිගමනවලට ඉඩ දී ප්රලේඛනය සහ ඩිව් මාර්ගෝපදේශය කියවා බැලුවහොත් සැබවින්ම අනුකූල වේ. කෙසේ වෙතත්, මගේ සැබෑ කාරණය, “නිවැරදි සන්දර්භය ලබා ගැනීම” සමහර විට උපක්රමශීලී විය හැකි අතර, මිනිසුන් අසාධාරණ ලෙස භීතියට පත්වන්නේ ඔවුන් සන්දර්භය අවශ්ය තත්වයකට දිව යන අතර ඔවුන්ට එය නැතැයි සිතන බැවිනි. නැවත වරක්, ජාවා යනු උරුම සැලසුමක් සහිත වස්තු-නැඹුරු භාෂාවකි.
ඔබේ ක්රියාකාරකම තුළ සන්දර්භය “උරුම” වන්නේ ඔබේ ක්රියාකාරකම සන්දර්භයෙන් උරුම වන බැවිනි. එයට කිසිදු ඉන්ද්රජාලයක් නොමැත (විවිධ පරාමිතීන් සැකසීමට සහ ඔබේ සන්දර්භය නිවැරදිව “වින්යාස කිරීමට” මෙහෙයුම් පද්ධතිය විසින්ම කරන සෑම දෙයක්ම හැර). එබැවින්, මතක / කාර්යසාධන ගැටළු පසෙකට දැමීම (උදා: ඔබට අවශ්ය නොවන විට සන්දර්භය වෙත යොමු කිරීම හෝ මතකයට අහිතකර ප්රති consequences ල ගෙන දෙන අයුරින් එය කිරීම), සන්දර්භය වෙනත් ඕනෑම වස්තුවක් වන අතර එය සම්මත කළ හැකිය ඕනෑම POJO (සරල පැරණි ජාවා වස්තුව) මෙන්. සමහර විට ඔබට එම සන්දර්භය ලබා ගැනීම සඳහා දක්ෂ දේවල් කිරීමට අවශ්ය විය හැකිය, නමුත් වස්තුව හැර වෙනත් කිසිම දෙයකින් විහිදෙන ඕනෑම සාමාන්ය ජාවා පන්තියක් සන්දර්භයට ප්රවේශ වන ආකාරයෙන් ලිවිය හැකිය; සන්දර්භයක් ගෙන පසුව අවශ්ය පරිදි එම පන්තියේ භාවිතා කරන පොදු ක්රමයක් හෙළි කරන්න.
සන්දර්භය යනු පද්ධතියට හසුරුවකි; එය සම්පත් විසඳීම, දත්ත සමුදායන් හා මනාපයන් වෙත ප්රවේශය ලබා ගැනීම වැනි සේවාවන් සපයයි. ඇන්ඩ්රොයිඩ් යෙදුමකට ක්රියාකාරකම් ඇත. සන්දර්භය යනු ඔබගේ යෙදුම දැනට ක්රියාත්මක වන පරිසරයට හසුරුවන්නාක් මෙනි. ක්රියාකාරකම් වස්තුවට සන්දර්භය වස්තුව උරුම වේ.
වැඩි විස්තර සඳහා, ඇන්ඩ්රොයිඩ් ස්ටුඩියෝ - නිබන්ධනය සමඟ ඇන්ඩ්රොයිඩ් සංවර්ධනය පිළිබඳ හැඳින්වීම බලන්න .
Context
යෙදුම් පරිසරයක් පිළිබඳ ගෝලීය තොරතුරු සඳහා "අතුරු මුහුණතක්" වේ. ප්රායෝගිකව, Context
ඇත්ත වශයෙන්ම වියුක්ත පන්තියකි , එය ක්රියාත්මක කිරීම ඇන්ඩ්රොයිඩ් පද්ධතිය විසින් සපයනු ලැබේ.
යෙදුම්-විශේෂිත සම්පත් සහ පංති වෙත ප්රවේශ වීමට මෙන්ම ක්රියාකාරකම් දියත් කිරීම, විකාශනය කිරීම සහ අභිප්රායන් ලැබීම වැනි යෙදුම් මට්ටමේ මෙහෙයුම් සඳහා ඉහළ ඇමතුම් ලබා ගැනීමට එය ඉඩ දෙයි.
පහත දැක්වෙන පින්තූරයේ, ඔබට පන්තිවල ධූරාවලියක් දැකිය හැකිය Context
, මෙම ධූරාවලියෙහි මූල පන්තිය කොහිද . විශේෂයෙන්, එය Activity
පැවත එන්නෙකු බව අවධාරණය කිරීම වටී Context
.
මොකක්ද Context
හරියටම?
ඇන්ඩ්රොයිඩ් විමර්ශන ලියකියවිලි අනුව, එය විවිධ පරිසර දත්ත නියෝජනය කරන ආයතනයකි. එය දේශීය ලිපිගොනු, දත්ත සමුදායන්, පරිසරයට සම්බන්ධ පන්ති පැටවුම්, සේවා (පද්ධති මට්ටමේ සේවාවන් ඇතුළුව) සහ තවත් බොහෝ දේ සඳහා ප්රවේශය සපයයි. මෙම පොත පුරාම සහ ඇන්ඩ්රොයිඩ් සමඟ ඔබේ එදිනෙදා කේතීකරණයේදී, සන්දර්භය නිතර නිතර ගමන් කරන ආකාරය ඔබට පෙනෙනු ඇත.
" ඇන්ඩ්රොයිඩ් ඉන් ප්රැක්ටිස් " පොතෙන්, පි. 60 යි.
ඇන්ඩ්රොයිඩ් ඒපීඅයි කිහිපයකට Context
පරාමිතියක් අවශ්ය වේ
ඔබ විවිධ ඇන්ඩ්රොයිඩ් ඒපීඅයි හරහා බැලුවහොත්, ඔවුන්ගෙන් බොහෝ දෙනෙක් android.content.Context
වස්තුවක් පරාමිතියක් ලෙස ගන්නා බව ඔබට පෙනෙනු ඇත. ක්රියාකාරකමක් හෝ සේවාවක් සාමාන්යයෙන් a ලෙස භාවිතා කරන බව ඔබට පෙනෙනු ඇත
Context
. මෙය ක්රියාත්මක වන්නේ මෙම පන්ති දෙකම විහිදෙන Context
බැවිනි.
context
Android හි තේරුම් ගැනීමට සරල උදාහරණය :
සෑම ලොක්කෙකුටම රැකබලා ගැනීමට සහ අඩු වැදගත් හා කාලය නාස්ති කිරීමේ කාර්යයන් කිරීමට සහායකයෙක් සිටී. ලිපිගොනුවක් හෝ කෝපි කෝප්පයක් අවශ්ය නම්, සහායකයෙක් ක්රියාත්මක වේ. සමහර ලොක්කන් කාර්යාලයේ සිදුවන්නේ කුමක් දැයි දන්නේ නැත, එබැවින් ඔවුන් මේ පිළිබඳව ඔවුන්ගේ සහායකයින්ගෙන් ද විමසයි. ඔවුන් තමන් විසින්ම යම් වැඩක් කරන නමුත් වෙනත් බොහෝ දේ සඳහා ඔවුන්ගේ සහායකයින්ගේ සහාය අවශ්ය වේ.
මෙම තත්වය තුළ,
ලොක්කා - යනු ඇන්ඩ්රොයිඩ් යෙදුමයි
සහකාර - යනු සන්දර්භයකි
ලිපිගොනු / කෝපි කෝප්පය - සම්පත් වේ
ක්රියාකාරකම්, යෙදුම් ආදිය වැනි අපගේ යෙදුමේ විවිධ කොටස් පිළිබඳ තොරතුරු ලබා ගැනීමට අවශ්ය වූ විට අපි සාමාන්යයෙන් සන්දර්භය අමතන්නෙමු.
සන්දර්භය සම්බන්ධ සමහර මෙහෙයුම් (සහකාර අවශ්ය ස්ථාන):
සන්දර්භය ලබා ගැනීමේ විවිධ ක්රම:
getContext()
getBaseContext()
getApplicationContext()
this
ඇන්ඩ්රොයිඩ් සන්දර්භය යනු අතුරුමුහුණතකි (පොදුවේ ගත් කල, ජාවා අර්ථයෙන් නොවේ; ජාවා හි,Context
ඇත්ත වශයෙන්ම වියුක්ත පන්තියකි!) එය යෙදුමට විශේෂිත සම්පත් සහ පන්ති සහ යෙදුම් පරිසරය පිළිබඳ තොරතුරු ලබා ගැනීමට ඉඩ සලසයි.
ඔබගේ ඇන්ඩ්රොයිඩ් යෙදුම වෙබ් යෙදුමක් නම්, ඔබේ සන්දර්භය සමාන දෙයක් වනු ඇත ServletContext
(මම මෙහි නිශ්චිත සංසන්දනයක් නොකරමි).
ඔබගේ ක්රියාකාරකම් සහ සේවාවන් ද විහිදේ Context
, එම නිසා යෙදුම ක්රියාත්මක වන පරිසර තොරතුරු වෙත ප්රවේශ වීමට ඔවුන්ට එම සියලු ක්රම උරුම වේ.
Context
පරිසර දත්ත ලබා ගැනීම සඳහා හසුරුව නියෝජනය කරයි.Context
පංතියම වියුක්ත ලෙස ප්රකාශයට පත් කර ඇති අතර, එය ක්රියාත්මක කිරීම ඇන්ඩ්රොයිඩ් මෙහෙයුම් පද්ධතිය විසින් සපයනු ලැබේ.Context
රූපවාහිනියක දුරස්ථ හා රූපවාහිනියේ නාලිකා සම්පත්, සේවා ආදිය වේ.
ඔබට එය සමඟ කළ හැක්කේ කුමක්ද?
සන්දර්භය ලබා ගත හැකි ක්රම:
නවකයන් සඳහා එය එළියට දැමීම;
එබැවින් පළමුව වචන සන්දර්භය තේරුම් ගන්න:
ඉංග්රීසි-ලිබ් වලින්. එහි තේරුම:
"සිදුවීමක්, ප්රකාශයක් හෝ අදහසක් සඳහා පසුබිම සැකසෙන තත්වයන් සහ එය සම්පූර්ණයෙන් වටහාගෙන තක්සේරු කළ හැකි තත්වයන් අනුව."
"වචනයක් හෝ ඡේදයක් වහාම පෙර හා අනුගමනය කර එහි අර්ථය පැහැදිලි කරන ලිඛිත හෝ කථා කරන දෙයක කොටස්."
දැන් එම අවබෝධය ක්රමලේඛන ලෝකයට ගෙන යන්න:
යෙදුමේ / වස්තුවේ වත්මන් තත්වයේ සන්දර්භය. අලුතින් සාදන ලද වස්තූන් හට සිදුවෙමින් පවතින දේ තේරුම් ගැනීමට එය ඉඩ දෙයි. ඔබේ වැඩසටහනේ තවත් කොටසක් (ක්රියාකාරකම්, පැකේජ / යෙදුම) පිළිබඳ තොරතුරු ලබා ගැනීම සඳහා සාමාන්යයෙන් ඔබ එය අමතන්න.
ඔබ යොදාගැනීම මගින් සන්දර්භය ලබා ගත හැක 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;
}
}
දැන් ඔබට ක්රියාකාරී නොවන පන්තියේ යෙදුම් සන්දර්භය අවශ්ය ඕනෑම වේලාවක, මෙම ක්රමය අමතන්න, ඔබට යෙදුම් සන්දර්භය ඇත.
මෙම උපකාරය බලාපොරොත්තු වේ;)
පන්තිය android.content.Context
ඇන්ඩ්රොයිඩ් පද්ධතියට සහ ව්යාපෘතියේ සම්පත් වෙත සම්බන්ධතාවය සපයයි. යෙදුම් පරිසරය පිළිබඳ ගෝලීය තොරතුරු සඳහා වන අතුරු මුහුණත එයයි.
සන්දර්භය ඇන්ඩ්රොයිඩ් සේවාවන්ට ප්රවේශය සපයයි, උදා: ස්ථාන සේවාව.
ක්රියාකාරකම් සහ සේවාවන් Context
පන්තිය දීර් extend කරයි .
සන්දර්භය යනු පන්තියේ android.content.Context යනු යෙදුම ක්රියාත්මක කරන ඇන්ඩ්රොයිඩ් පද්ධතියට සම්බන්ධතාවයයි. උදාහරණයක් ලෙස, ඔබට සන්දර්භය හරහා වත්මන් උපාංග සංදර්ශකයේ ප්රමාණය පරීක්ෂා කළ හැකිය.
එමඟින් ව්යාපෘතියේ සම්පත් සඳහා ප්රවේශය ද ලැබේ. යෙදුම් පරිසරය පිළිබඳ ගෝලීය තොරතුරු සඳහා වන අතුරු මුහුණත එයයි.
සන්දර්භය පන්තිය ඇන්ඩ්රොයිඩ් සේවාවන්ට ප්රවේශය ලබා දෙයි, උදා: කාලය පදනම් කරගත් සිදුවීම් අවුලුවාලීමට අනතුරු ඇඟවීමේ කළමනාකරු.
ක්රියාකාරකම් සහ සේවාවන් සන්දර්භය පන්තිය දීර් extend කරයි. එබැවින් ඒවා සන්දර්භයට ප්රවේශ වීම සඳහා කෙලින්ම භාවිතා කළ හැකිය.
සන්දර්භය යනු යෙදුම් පරිසරයක් පිළිබඳ ගෝලීය තොරතුරු සඳහා අතුරු මුහුණතකි. එය 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/reference/android/content/Context.html වෙත පිවිසිය හැකිය
සන්දර්භය මූලික වශයෙන් සම්පත් ප්රවේශය සහ යෙදුමේ පරිසර තොරතුරු (යෙදුම් සන්දර්භය සඳහා) හෝ ක්රියාකාරකම් (ක්රියාකාරකම් සන්දර්භය සඳහා) හෝ වෙනත් ඕනෑම දෙයක් සඳහා ...
මතක කාන්දු වීම වළක්වා ගැනීම සඳහා ඔබ සන්දර්භය වස්තුවක් අවශ්ය සෑම සංරචකයක් සඳහාම යෙදුම් සන්දර්භය භාවිතා කළ යුතුය .... වැඩි විස්තර සඳහා මෙහි ක්ලික් කරන්න
සන්දර්භය යනු යෙදුමේ / වස්තුවේ වත්මන් තත්වයේ සන්දර්භයයි. විවිධ පරිසර දත්ත නියෝජනය කරන ආයතනයකි. දේශීය ලිපිගොනු, දත්ත සමුදායන්, පරිසරයට සම්බන්ධ පන්ති භාරකරුවන්, පද්ධති මට්ටමේ සේවාවන් ඇතුළු සේවාවන් සහ තවත් බොහෝ දේ වැනි පිටත ඇන්ඩ්රොයිඩ් පරිසරය සමඟ අන්තර් ක්රියා කිරීමට සන්දර්භය වර්තමාන ක්රියාකාරකමට උපකාරී වේ.
සන්දර්භය යනු පද්ධතියට හසුරුවකි. එය සම්පත් විසඳීම, දත්ත සමුදායන් හා මනාපයන් වෙත ප්රවේශය ලබා ගැනීම වැනි සේවාවන් සපයයි. Android යෙදුමකට ක්රියාකාරකම් ඇත. එය ඔබගේ යෙදුම දැනට ක්රියාත්මක වන පරිසරයට හසුරුවන්නාක් මෙනි. ක්රියාකාරකම් වස්තුවට සන්දර්භය වස්තුව උරුම වේ.
ඔබට සන්දර්භය ලබා ගත හැකි විවිධ ආයාචනා ක්රම 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. හෝ මෙය (ක්රියාකාරකම් පන්තියේ සිටින විට).
සන්දර්භය යන්නෙන් අදහස් කරන්නේ මා කුමන ක්රියාකාරකමකට යා යුතුද, ක්රියා කළ යුතුද යන්න ඇන්ඩ්රොයිඩ් දැන ගැනීමයි.
1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show();
එය මේ සඳහා භාවිතා කරයි.
Context context = ActivityName.this;
2 -startActivity(new Intent(context,LoginActivity.class));
මෙම සන්දර්භය තුළ ඔබට වෙනත් ක්රියාකාරකමකට යාමට අවශ්ය කුමන ක්රියාකාරකමෙන් අදහස් වේ. context හෝ ActivityName.this වේගවත් නම් getContext සහ getApplicatinContext.
ඒ Context
අප බොහෝ කතා ඇත දේ අයදුම් . එය ඇන්ඩ්රොයිඩ් පද්ධතිය විසින් සාදන ලද අතර එය කළ හැක්කේ යෙදුමකට හැකි දේ පමණි. ටොම්කාට් හි, සන්දර්භය යනු මම යෙදුමක් ලෙස හඳුන්වන දෙයයි.
බොහෝ ක්රියාකාරකම් ඇති එක් සන්දර්භයක් ඇත, එක් එක් ක්රියාකාරකමට බොහෝ දර්ශන තිබිය හැකිය.
නිසැකවම, සමහරු පවසන්නේ මෙය හෝ එය නිසා එය නොගැලපෙන බවත් ඒවා බොහෝ විට නිවැරදි බවත් ය, නමුත් සන්දර්භය ඔබේ වර්තමාන යෙදුම යැයි පැවසීම ඔබ ක්රම පරාමිතීන් තුළට ඇතුළත් කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට උපකාරී වේ.
සන්දර්භයෙහි තාක්ෂණය පිළිබඳව ගැඹුරට කිමිදීමට පෙර කුඩා ප්රතිසමයක් කරමු
සෑම ලොක්කාටම ඔහු වෙනුවෙන් අඩු වැදගත්කමක් සහ වැඩි කාලයක් ගත කරන සහායකයකු හෝ යමෙකු (වැරදි පිරිමි ළමයෙකු) සිටී. උදාහරණයක් ලෙස, ඔවුන්ට ලිපිගොනුවක් හෝ කෝපි අවශ්ය නම් සහායකයා ක්රියාත්මක වේ. පසුබිමේ සිදුවන්නේ කුමක්දැයි ලොක්කා නොදන්නා නමුත් ගොනුව හෝ කාර්යය භාර දෙනු ඇත
ඉතින් මෙන්න
ලොක්කා - ඇන්ඩ්රොයිඩ් යෙදුම
සහකාර - සන්දර්භය
ගොනුව හෝ කෝපි කෝප්පයක් - සම්පත්
සන්දර්භය ඔබේ පිවිසුම් ස්ථානයයි යෙදුම් ආශ්රිත සම්පත් සඳහා
එවැනි සම්පත් හෝ කාර්යයන් කිහිපයක් බලමු
ක්රියාකාරකමක් දියත් කිරීම.
ගොනු පද්ධතියේ යෙදුම්-විශේෂිත හැඹිලි නාමාවලියට නිරපේක්ෂ මාර්ගයක් ලබා ගැනීම.
ලබා දී ඇති අවසරය නිශ්චිත ක්රියාවලියක් සඳහා අවසර දී තිබේද යන්න සහ පද්ධතිය තුළ ක්රියාත්මක වන පරිශීලක හැඳුනුම්පත තීරණය කිරීම.
ඔබට විශේෂ අවසරයක් ලබා දී ඇත්දැයි පරීක්ෂා කිරීම.
සහ යනාදි.
එබැවින් ඇන්ඩ්රොයිඩ් යෙදුමකට ක්රියාකාරකමක් ආරම්භ කිරීමට අවශ්ය නම් එය කෙලින්ම යයිContext
(ඇක්සස් පොයින්ට්) වෙතට යන අතර Context
පන්තිය ඔහුට සම්පත් ආපසු ලබා දෙයි (මෙම අවස්ථාවේ දී අභිප්රාය).
වෙනත් ඕනෑම පංතියකට මෙන් Context
ක්ෂේත්ර හා ක්රම තිබේ. නිල ලියකියවිලි වලින්
ඔබට තවත් ගවේෂණය කළ හැකිය Context
, එය බොහෝ දේ, පවතින ක්රම, ක්ෂේත්ර සහ ක්රම සමඟ ක්ෂේත්ර භාවිතා කරන්නේ කෙසේද යන්න ආවරණය කරයි.
පංතියේ අවස්ථා android.content.Context යෙදුම ක්රියාත්මක කරන ඇන්ඩ්රොයිඩ් පද්ධතියට සම්බන්ධතාවය සපයයි. උදාහරණයක් ලෙස, ඔබට සන්දර්භය හරහා වත්මන් උපාංග සංදර්ශකයේ ප්රමාණය පරීක්ෂා කළ හැකිය.
එමඟින් ව්යාපෘතියේ සම්පත් සඳහා ප්රවේශය ද ලැබේ. යෙදුම් පරිසරය පිළිබඳ ගෝලීය තොරතුරු සඳහා වන අතුරු මුහුණත එයයි.
සන්දර්භය පන්තිය ඇන්ඩ්රොයිඩ් සේවාවන්ට ප්රවේශය ලබා දෙයි, උදා: කාලය පදනම් කරගත් සිදුවීම් අවුලුවාලීමට අනතුරු ඇඟවීමේ කළමනාකරු.
ක්රියාකාරකම් සහ සේවාවන් සන්දර්භය පන්තිය දීර් extend කරයි. එබැවින් ඒවා සන්දර්භයට ප්රවේශ වීම සඳහා කෙලින්ම භාවිතා කළ හැකිය.
ඔබට ඇන්ඩ්රොයිඩ් හි වෙනත් හුරුපුරුදු පන්ති සමඟ සන්දර්භය සම්බන්ධ කිරීමට අවශ්ය නම් , මෙම ව්යුහය මතක තබා ගන්න:
සන්දර්භය <ContextWrapper <යෙදුම
සන්දර්භය <ContextWrapper <ContextThemeWrapper <ක්රියාකාරකම
සන්දර්භය <ContextWrapper <ContextThemeWrapper <ක්රියාකාරකම <ListActivity
සන්දර්භය <ContextWrapper <සේවාව
සන්දර්භය <ContextWrapper <සේවාව <IntentService
ඉතින්, එම පංති සියල්ලම ඔවුන්ගේම ආකාරයෙන් සන්දර්භයන් වේ. ඔබ වීසි කළ හැකි සේවා හා ListActivity කිරීමට සංදර්භය ඔබ කැමති නම්. නමුත් ඔබ සමීපව බැලුවහොත්, සමහර පංතිවල තේමාව ද උරුම වේ. ක්රියාකාරකමක හෝ කැබැල්ලක දී, ඒවා ඔබේ අදහස්වලට අදාළ කර ගැනීමට ඔබ කැමති නමුත්, ඒ ගැන සැලකිලිමත් නොවන්න සේවා පන්තිය, උදාහරණයක් ලෙස.
මම මෙහි සන්දර්භයන්හි වෙනස පැහැදිලි කරමි .
සරලව Context
කිවහොත් , ඇන්ඩ්රොයිඩ් යනු ඔබ කරදර වීම නවත්වන තුරු ඔබ ආදරය නොකරන අවුලකි .
Android Context
s යනු:
දෙවියන්-වස්තූන්.
ඔබ ඇන්ඩ්රොයිඩ් සඳහා සංවර්ධනය කිරීම ආරම්භ කරන විට ඔබගේ සියලුම යෙදුම් පසුකර යාමට ඔබට අවශ්ය නමුත් එය ක්රමලේඛන, පරීක්ෂණ සහ ඇන්ඩ්රොයිඩ් වලට මඳක් සමීප වූ විට එය කිරීමෙන් වැළකී සිටියි.
අපැහැදිලි යැපීම.
මතක කාන්දු වීමේ පොදු ප්රභවය.
පරීක්ෂා කිරීම සඳහා පිටා.
අවසර, සම්පත්, මනාපයන්, සේවා, විකාශන, මෝස්තර, සංවාද පෙන්වීම සහ පිරිසැලසුම අවුලුවාලීමට ඇන්ඩ්රොයිඩ් පද්ධතිය භාවිතා කරන සත්ය සන්දර්භය. ඔබට Context
වෙනමම දේවල් සඳහා විවිධ අවස්ථා අවශ්ය වේ (පැහැදිලිවම, ඔබට යෙදුමකින් හෝ සේවා සන්දර්භයකින් සංවාදයක් පෙන්විය නොහැක; යෙදුමෙන් සහ ක්රියාකාරකම් සන්දර්භයන්ගෙන් උද්ධමනය වෙනස් විය හැකිය).
මෙම සංදර්භය එක් එක් යෙදුම-S කිරීමට ඇන්ඩ්රොයිඩ් විශේෂිත api වේ සෑන්ඩ්බොක්ස් සම්පත්, දත්ත, පෞද්ගලික filedirectories, මනාපයන්, සැකසුම් වැනි ප්රවේශ යෙදුම පෞද්ගලික දත්ත සපයන ...
එක් යෙදුමක සියලුම ක්රියාකාරකම් / සේවා / විකාශන ලැයිස්තුගත කරන්නන් සඳහා බොහෝ පුද්ගලික දත්ත සමාන වේ.
යෙදුම, ක්රියාකාරකම, සේවාව විසින් සන්දර්භය අතුරුමුහුණත ක්රියාත්මක කරන බැවින් api ඇමතුමකට සන්දර්භ පරාමිතියක් අවශ්ය වන විට ඒවා භාවිතා කළ හැකිය
Context
විවිධ කාල වකවානුවල සංරචකය (හෝ යෙදුම) යන්නයි. මම ප.ව. අන්තර්ගතය යනු යම් කාලයක් සඳහා සංරචකයකි (යෙදුම). මෙම Context
අයදුම්පත් සංරචක සංරචක ෙහෝ අයදුම් යටින් ඇති ජීව චක්රය මත පදනම් වෙනස් වෙනවා. උදාහරණයක් ලෙස, onCreate () තුළ Activity
,
getBaseContext()
- ලබා දෙනවා, context
මේ වන Activity
ක්රියාකාරකම් ඉදිකිරීමටත් විසින් (නිර්මාණය) සකසා තිබේ.
getApplicationContext()
- Context
යෙදුම නිර්මාණය කිරීමේදී සැකසුම (නිර්මාණය) ලබා දෙයි .
සටහන: <application>
සියලුම ඇන්ඩ්රොයිඩ් සංරචක ඇත.
<application>
<activity> .. </activity>
<service> .. </service>
<receiver> .. </receiver>
<provider> .. </provider>
</application>
එයින් අදහස් වන්නේ, ඔබ getApplicationContext()
ඕනෑම අංගයක් ඇතුළත සිට අමතන විට , ඔබ සමස්ත යෙදුමේ පොදු සන්දර්භය අමතයි.
Context
සංරචක වල ජීවන චක්රය මත පදනම්ව පද්ධතිය විසින් වෙනස් කරනු ලැබේ.
සන්දර්භය විවිධ සම්පත් ඇති කොටුවක් ලෙස සිතන්න: නූල්, වර්ණ සහ අකුරු. ඔබට සම්පතක් අවශ්ය නම්, ඔබ මෙම කොටුව දෙසට හැරේ. ඔබ තිරය භ්රමණය කරන විට, මෙම කොටුව වෙනස් වන්නේ දිශානතිය භූ දර්ශනයට වෙනස් වන බැවිනි.
Context
ධාරාව යන්නෙන් අදහස් වේ.
Context
වත්මන් තිරය සඳහා ක්රියා කිරීමට භාවිතා කරන්න. උදා.
1. getApplicationContext ()
2. getContext ()
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
විශිෂ්ට පැහැදිලි කිරීම්! ඉහත සියල්ලට අනුපූරකව, මයින්ඩ් ඕර්ක්ස් වෙතින් මෙය ඉතා ප්රයෝජනවත් බව මට පෙනී ගියේය, ඔබේ මනස ඉදිරියට ගෙන යාම සඳහා මූලික භාවිත අවස්ථා කිහිපයක් පවා පෙන්වයි:
ජාවා හි, මෙම මූල පදය යෙදුමේ වත්මන් වස්තුවේ තත්වය සඳහන් කරයි.
ඒ හා සමානව, Context
ඇන්ඩ්රොයිඩ් සංවර්ධනයේ අපට ඇති විකල්පයක .
මෙය පැහැදිලිව හෝ ව්යංගයෙන් අර්ථ දැක්විය හැකිය,
Context con = this;
getApplicationContext();
getBaseContext();
getContext();
this
ක්රියාත්මක වන්නේ ක්රියාකාරකම් වල පමණි. සන්දර්භය "මෙය" සඳහා විකල්පයක් නොවේ - සන්දර්භය පද්ධති විශේෂාංග වෙත ප්රවේශ වීමට භාවිතා කරයි, සහ තවත් බොහෝ දේ. ඔබ සන්දර්භය ඕනෑවට වඩා සරල කරන අතර එය සමඟ ඇති ප්රධාන කරුණ මග හැරී ඇත.
මෙම පිරිසැලසුම පෙරනිමියෙන් මෙම පිරිසැලසුම හා සම්බන්ධ වන්නේ කුමන ක්රියාකාරකමකින්දැයි ප්රකාශ කරයි .