ඇන්ඩ්‍රොයිඩ් හි 'සන්දර්භය' යනු කුමක්ද?


1978

ඇන්ඩ්‍රොයිඩ් ක්‍රමලේඛනයේදී, Contextපංතියක් යනු කුමක්ද සහ එය භාවිතා කරන්නේ කුමක් සඳහාද?

මම ඒ ගැන සංවර්ධක අඩවියේ කියවූ නමුත් මට එය පැහැදිලිව තේරුම් ගත නොහැක.


Answers:


1513

සරලව කිවහොත්:

නමට අනුව, එය යෙදුමේ / වස්තුවේ වත්මන් තත්වයේ සන්දර්භයයි. අලුතින් සාදන ලද වස්තූන් හට සිදුවෙමින් පවතින දේ තේරුම් ගැනීමට එය ඉඩ දෙයි. සාමාන්‍යයෙන් ඔබ එය අමතන්නේ ඔබේ වැඩසටහනේ තවත් කොටසක් (ක්‍රියාකාරකම් සහ පැකේජ / යෙදුම) පිළිබඳ තොරතුරු ලබා ගැනීම සඳහා ය.

ඔබ සන්දර්භය යොදාගැනීම මගින් ලබා ගත හැක 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, ...);

51
ඔබේ උදාහරණයේ context.getSystemService(LAYOUT_INFLATER_SERVICE), contextඅර්ථ දැක්වෙන්නේ කොහේද සහ කෙසේද ?
ඩෙනිස්

8
පෙළ දර්ශනයක් ගතිකව නිර්මාණය කරන අතරම අපට සන්දර්භය අවශ්‍ය වන්නේ මන්ද යන්න හොඳින් පැහැදිලි කර ඇත. නමුත් පෙළ දර්ශන පෙළ ගතිකව නිර්මාණය කරන අතරම අපට කිසිදු සන්දර්භයක් සඳහන් කළ යුතු නැත. එය එසේ වන්නේ ඇයි? පෙළ දර්ශනය [] පෙළ දර්ශනය = නව පෙළ දර්ශනය [10];
අභිනව් අරෝරා

39
B අබිනව් අරෝරා අරාව නිර්වචනය කිරීමේදී, ඔබ ඇත්ත වශයෙන්ම කිසිදු පෙළ දසුන් පිළිබඳ නිදසුනක් ගොඩනඟන්නේ නැත (ඔබ මූලික වශයෙන් ඔවුන්ට ඇතුළුවීමට අවකාශය නිර්මාණය කරයි). එම ශ්‍රේණියට කිසියම් අගයක් දැමීමට ඔබ පැමිණෙන මොහොතේදී, ඔබට කලින් සාදන ලද පෙළ දර්ශන අවශ්‍ය වනු ඇත, නැතහොත් ඒවා නිර්මාණය කිරීමට ඔබට ඉඩ දීමට සන්දර්භයක් අවශ්‍ය වේ.
mc1arke

24
අදහස් සඳහා සන්දර්භය අවශ්‍ය වන්නේ ඇයි? උදාහරණයක් ලෙස, සන්දර්භය නොමැති නම් TextView හට කළ නොහැක්කේ කුමක්ද?
ඩයිනෝසෝරයා

15
"සන්දර්භය" නොමැතිව කේත කැබැල්ලකට ජේවීඑම් ඇති සෑම මෙහෙයුම් පද්ධතියක් තුළම ක්‍රියාත්මක විය හැකිය. නමුත් සන්දර්භයක් තිබේ නම් එය ඇන්ඩ්‍රොයිඩ් මත ක්‍රියාත්මක විය යුතුය. ඔබට ඇන්ඩ්‍රොයිඩ් විශේෂිත දේවල් භාවිතා කිරීමට අවශ්‍ය නම් (උපාංග ස්ථානයට ප්‍රවේශ වීම, ඡායාරූපයක් ගැනීම, පසුබිම් සේවාවක් ක්‍රියාත්මක කිරීම යනාදිය) ඔබට සන්දර්භයක් අවශ්‍ය වුවද ඔබට එය අවශ්‍ය නොවේ http ඉල්ලීම. සන්දර්භය ජාවා සහ ඇන්ඩ්‍රොයිඩ් අතර පාලමක් ලෙස උපකල්පනය කළ හැකිය.
ෆාරුක් ටොප්ටාස්

512

සන්දර්භය අර්ථ දැක්වීම

  • සන්දර්භය පරිසර දත්ත නියෝජනය කරයි
  • එය දත්ත සමුදායන් වැනි දේ සඳහා ප්‍රවේශය සපයයි

සරල යෙදුම් (උදාහරණ 1)

  • ආරම්භක මෘදුකාංග සමාගමක ප්‍රධාන විධායක නිලධාරියා වන්නේ පුද්ගල-එක්ස් ය.

  • සමාගම තුළ ඊයම් ගෘහ නිර්මාණ ශිල්පියෙකු සිටින අතර, මෙම ඊයම් ගෘහ නිර්මාණ ශිල්පියා සමාගමේ සියලු කටයුතු කරන්නේ දත්ත සමුදාය, යූඅයි යනාදියයි.

  • දැන් ප්‍රධාන විධායක නිලධාරී නව සංවර්ධකයෙකු බඳවා ගනී.

  • දත්ත සමුදාය හෝ යූඅයි යනාදියෙහි වැඩ කරන්නේද යන්න නව පුද්ගලයාගේ කුසලතා මත පදනම්ව අලුතින් කුලියට ගත් පුද්ගලයාගේ වගකීම ගෘහ නිර්මාණ ශිල්පියා පවසයි.

සරල යෙදුම් (උදාහරණ 2)

  • එය ඇන්ඩ්‍රොයිඩ් ක්‍රියාකාරකම් යෙදුමේ සම්පතට ප්‍රවේශ වීම වැනි ය.

  • එය ඔබ හෝටලයකට ගිය විට සමාන වේ, ඔබට උදේ ආහාරය, දිවා ආහාරය සහ රාත්‍රී ආහාරය සුදුසු වේලාවට අවශ්‍යයි නේද?

  • රැඳී සිටින කාලය තුළ ඔබ කැමති තවත් බොහෝ දේ ඇත. ඔබ මේවා ලබා ගන්නේ කෙසේද?

  • කාමර සේවා පුද්ගලයාගෙන් ඔබ ඉල්ලා සිටින්නේ මේ දේවල් ඔබ වෙනුවෙන් ගෙන එන ලෙසයි.

  • මෙහි කාමර-සේවා පුද්ගලයා යනු ඔබ තනි ක්‍රියාකාරකමක් සහ හෝටලය ඔබේ යෙදුම ලෙස සලකන සන්දර්භයයි, අවසානයේ උදේ ආහාරය, දිවා ආහාරය සහ රාත්‍රී ආහාරය සම්පත් විය යුතුය.


සන්දර්භය හා සම්බන්ධ කරුණු:

  1. සම්පතක් පූරණය වේ.
  2. නව ක්‍රියාකාරකමක් දියත් කිරීම.
  3. අදහස් නිර්මාණය කිරීම.
  4. පද්ධති සේවය ලබා ගැනීම.

සන්දර්භය යනු ක්‍රියාකාරකම් , සේවා , යෙදුම සඳහා මූලික පන්තියයි යනාදිය

මෙය විස්තර කළ හැකි තවත් ක්‍රමයක්: රූපවාහිනියේ සහ නාලිකාවක දුරස්ථව සන්දර්භය සලකා බලන්න සම්පත්, සේවා, අභිප්‍රායන් භාවිතා කිරීම යනාදිය - - - මෙහිදී දුරස්ථව ක්‍රියා කරන්නේ විවිධ සම්පත් වෙත පෙරට පිවිසීමට ප්‍රවේශයක් වශයෙනි.

  • එබැවින් දුරස්ථව සම්පත්, සේවා, අභිප්‍රායන් භාවිතා කිරීම වැනි නාලිකා වලට ප්‍රවේශය ඇත ....

  • ඒ හා සමානව ... දුරස්ථව පිවිසෙන ඕනෑම කෙනෙකුට ස්වාභාවිකවම සම්පත්, සේවා, අභිප්‍රාය භාවිතා කිරීම වැනි සියලු දේ සඳහා ප්‍රවේශය ඇත


ඔබට සන්දර්භය ලබා ගත හැකි විවිධ ක්‍රම

  • getApplicationContext()
  • getContext()
  • getBaseContext()
  • හෝ this(ක්‍රියාකාරකම් පන්තියේ සිටින විට)

උදාහරණයක්:

TextView tv = new TextView(this);

මූලික පදය thisවර්තමාන ක්‍රියාකාරිත්වයේ සන්දර්භය වෙත යොමු වේ.


3
හරි, එබැවින් ක්‍රියාකාරකමෙන් ලබාගත් පන්තිය සන්දර්භයක් ම වේ. අළුතින් නිර්මාණය කරන ලද අදහස් වෙත මෙය යොමු කිරීමෙන් අපි සන්දර්භය පසුකර යන්නේ එබැවිනි.
0leg

7
විවිධ ස්ථාන වලින් සන්දර්භය වෙත ප්‍රවේශ වීම හොඳ නිර්මාණ තීරණයක් දැයි මට සිතේ. යෙදුමේ එක් ස්ථිතික getContext () මගේ මතය අනුව ප්‍රමාණවත් වනු ඇත.
ට්‍රයිලරියන්

@Trilarion ... එය ඔබ සන්දර්භය භාවිතා කිරීමට අවශ්ය ආකාරය මත රඳා පවතී getApplicationContext(), getContext(), getBaseContext()..... මේ බලන්න -> ( stackoverflow.com/a/10641257 )
Devrath

පෙළ දර්ශනයක් නිර්මාණය කිරීම සමඟ අවසාන කොටස පුළුල් කිරීම සඳහා: සමහර අවස්ථාවල එය ඇමතීමට අවශ්‍ය විය හැකිය SomeActivityName.this. නිදසුනක් සඳහා ත්‍රෙඩ් එකක thisසඳහන් වන්නේ ටෙහ් නූල් මිස ක්‍රියාකාරකම නොවේ
Zoe

1
සන්දර්භය වස්තුව apk හෝ Android OS සඳහා අද්විතීයද? යෙදුමකට වෙනස් සන්දර්භ දෙකක් තිබිය හැකිද?
valijon

373

මූලාශ්රය


ඇන්ඩ්‍රොයිඩ් හි සන්දර්භය යන මාතෘකාව බොහෝ දෙනෙකුට ව්‍යාකූල බවක් පෙනේ. ඇන්ඩ්‍රොයිඩ් හි මූලික දේ කිරීමට සන්දර්භය බොහෝ විට අවශ්‍ය බව ජනතාව දනිති. සමහර විට මිනිසුන් භීතියට පත්වන්නේ ඔවුන් සන්දර්භය අවශ්‍ය වන යම් මෙහෙයුමක් කිරීමට උත්සාහ කරන නිසා සහ නිවැරදි සන්දර්භය “ලබා ගන්නේ” කෙසේදැයි නොදන්නා බැවිනි. මම ඇන්ඩ්‍රොයිඩ් හි සන්දර්භය පිළිබඳ අදහස අවලංගු කිරීමට උත්සාහ කරමි. ගැටලුව පිළිබඳ පූර්ණ ප්‍රතිකාරයක් මෙම ලිපියේ විෂය පථයෙන් ඔබ්බට ය, නමුත් සන්දර්භය යනු කුමක්ද සහ එය භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ අවබෝධයක් ලබා ගැනීම සඳහා මම සාමාන්‍ය දළ විශ්ලේෂණයක් ලබා දීමට උත්සාහ කරමි. සන්දර්භය යනු කුමක්දැයි වටහා ගැනීමට, අපි ප්‍රභව කේතය දෙස බලමු:

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 සම්පත් (මතක් කරන්නවත් එපා 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 (සරල පැරණි ජාවා වස්තුව) මෙන්. සමහර විට ඔබට එම සන්දර්භය ලබා ගැනීම සඳහා දක්ෂ දේවල් කිරීමට අවශ්‍ය විය හැකිය, නමුත් වස්තුව හැර වෙනත් කිසිම දෙයකින් විහිදෙන ඕනෑම සාමාන්‍ය ජාවා පන්තියක් සන්දර්භයට ප්‍රවේශ වන ආකාරයෙන් ලිවිය හැකිය; සන්දර්භයක් ගෙන පසුව අවශ්‍ය පරිදි එම පන්තියේ භාවිතා කරන පොදු ක්‍රමයක් හෙළි කරන්න.


34
මෙය විශිෂ්ට පිළිතුරකි. පිළිගත් තැනැත්තාට වඩා බොහෝ සෙයින් හොඳය, එයින් කියවෙන්නේ සෑම කෙනෙකුම බුද්ධිමත්ව දන්නා දේ පමණි.
හොන්සා කල්ෆස්

5
ඔබ සොයන දිගු පිළිතුර මෙයයි! හොඳින් පැහැදිලි කර ඇත
නික් ජියාන්

4
විශිෂ්ට පිළිතුරු! බරපතල ලෙස!
zeekhuge

3
හ්ම්ම්, මට නම් මේ සියල්ලම පැරණි විචල්‍යයන් ගෝලීය විචල්‍යයන් ලෙස හැඳින්වූවාක් මෙන් පෙනේ. එය වස්තු දිශානතිය 8 වන ස්ථානයට ඇතුළු වූ විට බොහෝ සෙයින් කෝපයට පත් විය.)
උල්ෆ් එඩ්හෝම්

ඉතින් GetApplicationContext වෙතින් මට ලැබෙන සන්දර්භය එය ක්‍රියාකාරකමේ getContext හා සමානද?
ජේපීඑම්

120

සන්දර්භය යනු පද්ධතියට හසුරුවකි; එය සම්පත් විසඳීම, දත්ත සමුදායන් හා මනාපයන් වෙත ප්‍රවේශය ලබා ගැනීම වැනි සේවාවන් සපයයි. ඇන්ඩ්‍රොයිඩ් යෙදුමකට ක්‍රියාකාරකම් ඇත. සන්දර්භය යනු ඔබගේ යෙදුම දැනට ක්‍රියාත්මක වන පරිසරයට හසුරුවන්නාක් මෙනි. ක්‍රියාකාරකම් වස්තුවට සන්දර්භය වස්තුව උරුම වේ.

වැඩි විස්තර සඳහා, ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ - නිබන්ධනය සමඟ ඇන්ඩ්‍රොයිඩ් සංවර්ධනය පිළිබඳ හැඳින්වීම බලන්න .


89

Contextයෙදුම් පරිසරයක් පිළිබඳ ගෝලීය තොරතුරු සඳහා "අතුරු මුහුණතක්" වේ. ප්‍රායෝගිකව, Contextඇත්ත වශයෙන්ම වියුක්ත පන්තියකි , එය ක්‍රියාත්මක කිරීම ඇන්ඩ්‍රොයිඩ් පද්ධතිය විසින් සපයනු ලැබේ.

යෙදුම්-විශේෂිත සම්පත් සහ පංති වෙත ප්‍රවේශ වීමට මෙන්ම ක්‍රියාකාරකම් දියත් කිරීම, විකාශනය කිරීම සහ අභිප්‍රායන් ලැබීම වැනි යෙදුම් මට්ටමේ මෙහෙයුම් සඳහා ඉහළ ඇමතුම් ලබා ගැනීමට එය ඉඩ දෙයි.

පහත දැක්වෙන පින්තූරයේ, ඔබට පන්තිවල ධූරාවලියක් දැකිය හැකිය Context, මෙම ධූරාවලියෙහි මූල පන්තිය කොහිද . විශේෂයෙන්, එය Activityපැවත එන්නෙකු බව අවධාරණය කිරීම වටී Context.

ක්‍රියාකාරකම් රූප සටහන


1
මෙම ඡායාරූපය ජනනය කළේ කෙසේද?
d0ye

70

මොකක්ද Contextහරියටම?

ඇන්ඩ්‍රොයිඩ් විමර්ශන ලියකියවිලි අනුව, එය විවිධ පරිසර දත්ත නියෝජනය කරන ආයතනයකි. එය දේශීය ලිපිගොනු, දත්ත සමුදායන්, පරිසරයට සම්බන්ධ පන්ති පැටවුම්, සේවා (පද්ධති මට්ටමේ සේවාවන් ඇතුළුව) සහ තවත් බොහෝ දේ සඳහා ප්‍රවේශය සපයයි. මෙම පොත පුරාම සහ ඇන්ඩ්‍රොයිඩ් සමඟ ඔබේ එදිනෙදා කේතීකරණයේදී, සන්දර්භය නිතර නිතර ගමන් කරන ආකාරය ඔබට පෙනෙනු ඇත.

" ඇන්ඩ්‍රොයිඩ් ඉන් ප්‍රැක්ටිස් " පොතෙන්, පි. 60 යි.

ඇන්ඩ්‍රොයිඩ් ඒපීඅයි කිහිපයකට Contextපරාමිතියක් අවශ්‍ය වේ

ඔබ විවිධ ඇන්ඩ්‍රොයිඩ් ඒපීඅයි හරහා බැලුවහොත්, ඔවුන්ගෙන් බොහෝ දෙනෙක් android.content.Contextවස්තුවක් පරාමිතියක් ලෙස ගන්නා බව ඔබට පෙනෙනු ඇත. ක්‍රියාකාරකමක් හෝ සේවාවක් සාමාන්‍යයෙන් a ලෙස භාවිතා කරන බව ඔබට පෙනෙනු ඇත Context. මෙය ක්‍රියාත්මක වන්නේ මෙම පන්ති දෙකම විහිදෙන Contextබැවිනි.


53

contextAndroid හි තේරුම් ගැනීමට සරල උදාහරණය :

සෑම ලොක්කෙකුටම රැකබලා ගැනීමට සහ අඩු වැදගත් හා කාලය නාස්ති කිරීමේ කාර්යයන් කිරීමට සහායකයෙක් සිටී. ලිපිගොනුවක් හෝ කෝපි කෝප්පයක් අවශ්‍ය නම්, සහායකයෙක් ක්‍රියාත්මක වේ. සමහර ලොක්කන් කාර්යාලයේ සිදුවන්නේ කුමක් දැයි දන්නේ නැත, එබැවින් ඔවුන් මේ පිළිබඳව ඔවුන්ගේ සහායකයින්ගෙන් ද විමසයි. ඔවුන් තමන් විසින්ම යම් වැඩක් කරන නමුත් වෙනත් බොහෝ දේ සඳහා ඔවුන්ගේ සහායකයින්ගේ සහාය අවශ්‍ය වේ.

මෙම තත්වය තුළ,

ලොක්කා - යනු ඇන්ඩ්‍රොයිඩ් යෙදුමයි

සහකාර - යනු සන්දර්භයකි

ලිපිගොනු / කෝපි කෝප්පය - සම්පත් වේ

ක්‍රියාකාරකම්, යෙදුම් ආදිය වැනි අපගේ යෙදුමේ විවිධ කොටස් පිළිබඳ තොරතුරු ලබා ගැනීමට අවශ්‍ය වූ විට අපි සාමාන්‍යයෙන් සන්දර්භය අමතන්නෙමු.

සන්දර්භය සම්බන්ධ සමහර මෙහෙයුම් (සහකාර අවශ්‍ය ස්ථාන):

  • පොදු සම්පත් පූරණය වෙමින් පවතී
  • ගතික අදහස් නිර්මාණය කිරීම
  • ටෝස්ට් පණිවිඩ පෙන්වීම
  • දියත් කිරීමේ ක්‍රියාකාරකම් ආදිය.

සන්දර්භය ලබා ගැනීමේ විවිධ ක්‍රම:

getContext()

getBaseContext()

getApplicationContext()

this

47

ඇන්ඩ්‍රොයිඩ් සන්දර්භය යනු අතුරුමුහුණතකි (පොදුවේ ගත් කල, ජාවා අර්ථයෙන් නොවේ; ජාවා හි,Context ඇත්ත වශයෙන්ම වියුක්ත පන්තියකි!) එය යෙදුමට විශේෂිත සම්පත් සහ පන්ති සහ යෙදුම් පරිසරය පිළිබඳ තොරතුරු ලබා ගැනීමට ඉඩ සලසයි.

ඔබගේ ඇන්ඩ්‍රොයිඩ් යෙදුම වෙබ් යෙදුමක් නම්, ඔබේ සන්දර්භය සමාන දෙයක් වනු ඇත ServletContext(මම මෙහි නිශ්චිත සංසන්දනයක් නොකරමි).

ඔබගේ ක්‍රියාකාරකම් සහ සේවාවන් ද විහිදේ Context, එම නිසා යෙදුම ක්‍රියාත්මක වන පරිසර තොරතුරු වෙත ප්‍රවේශ වීමට ඔවුන්ට එම සියලු ක්‍රම උරුම වේ.


36
  • Context පරිසර දත්ත ලබා ගැනීම සඳහා හසුරුව නියෝජනය කරයි.
  • Context පංතියම වියුක්ත ලෙස ප්‍රකාශයට පත් කර ඇති අතර, එය ක්‍රියාත්මක කිරීම ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතිය විසින් සපයනු ලැබේ.
  • Context රූපවාහිනියක දුරස්ථ හා රූපවාහිනියේ නාලිකා සම්පත්, සේවා ආදිය වේ. රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබට එය සමඟ කළ හැක්කේ කුමක්ද?

  • සම්පත් පූරණය වෙමින් පවතී.
  • නව ක්‍රියාකාරකමක් දියත් කිරීම.
  • අදහස් නිර්මාණය කිරීම.
  • පද්ධති සේවාව ලබා ගැනීම.

සන්දර්භය ලබා ගත හැකි ක්‍රම:

  • 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

යෙදුම හෝ සේවාව ක්‍රියාත්මක වන ක්‍රියාවලිය ගිල දැමූ වීඑම් ලෙස එය සිතන්න. රළු පරිසරයට යටින් පවතින පද්ධති තොරතුරු සහ අවසර ලත් සම්පත් රාශියකට ප්‍රවේශය ඇත. එම සේවාවන් ලබා ගැනීමට ඔබට එම සන්දර්භය අවශ්‍ය වේ.


17

සන්දර්භය යනු වර්තමාන වස්තුවට යොමු දැක්වීමකි. යෙදුම් පරිසරය පිළිබඳ තොරතුරු වෙත ප්‍රවේශ වීමට සන්දර්භය ඉඩ දෙයි.


13

පන්තිය android.content.Context ඇන්ඩ්‍රොයිඩ් පද්ධතියට සහ ව්‍යාපෘතියේ සම්පත් වෙත සම්බන්ධතාවය සපයයි. යෙදුම් පරිසරය පිළිබඳ ගෝලීය තොරතුරු සඳහා වන අතුරු මුහුණත එයයි.

සන්දර්භය ඇන්ඩ්‍රොයිඩ් සේවාවන්ට ප්‍රවේශය සපයයි, උදා: ස්ථාන සේවාව.

ක්‍රියාකාරකම් සහ සේවාවන් Contextපන්තිය දීර් extend කරයි .


9

සන්දර්භය යනු පන්තියේ android.content.Context යනු යෙදුම ක්‍රියාත්මක කරන ඇන්ඩ්‍රොයිඩ් පද්ධතියට සම්බන්ධතාවයයි. උදාහරණයක් ලෙස, ඔබට සන්දර්භය හරහා වත්මන් උපාංග සංදර්ශකයේ ප්‍රමාණය පරීක්ෂා කළ හැකිය.

එමඟින් ව්‍යාපෘතියේ සම්පත් සඳහා ප්‍රවේශය ද ලැබේ. යෙදුම් පරිසරය පිළිබඳ ගෝලීය තොරතුරු සඳහා වන අතුරු මුහුණත එයයි.

සන්දර්භය පන්තිය ඇන්ඩ්‍රොයිඩ් සේවාවන්ට ප්‍රවේශය ලබා දෙයි, උදා: කාලය පදනම් කරගත් සිදුවීම් අවුලුවාලීමට අනතුරු ඇඟවීමේ කළමනාකරු.

ක්‍රියාකාරකම් සහ සේවාවන් සන්දර්භය පන්තිය දීර් extend කරයි. එබැවින් ඒවා සන්දර්භයට ප්‍රවේශ වීම සඳහා කෙලින්ම භාවිතා කළ හැකිය.


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/reference/android/content/Context.html වෙත පිවිසිය හැකිය


8

සන්දර්භය මූලික වශයෙන් සම්පත් ප්‍රවේශය සහ යෙදුමේ පරිසර තොරතුරු (යෙදුම් සන්දර්භය සඳහා) හෝ ක්‍රියාකාරකම් (ක්‍රියාකාරකම් සන්දර්භය සඳහා) හෝ වෙනත් ඕනෑම දෙයක් සඳහා ...

මතක කාන්දු වීම වළක්වා ගැනීම සඳහා ඔබ සන්දර්භය වස්තුවක් අවශ්‍ය සෑම සංරචකයක් සඳහාම යෙදුම් සන්දර්භය භාවිතා කළ යුතුය .... වැඩි විස්තර සඳහා මෙහි ක්ලික් කරන්න


8

සන්දර්භය යනු යෙදුමේ / වස්තුවේ වත්මන් තත්වයේ සන්දර්භයයි. විවිධ පරිසර දත්ත නියෝජනය කරන ආයතනයකි. දේශීය ලිපිගොනු, දත්ත සමුදායන්, පරිසරයට සම්බන්ධ පන්ති භාරකරුවන්, පද්ධති මට්ටමේ සේවාවන් ඇතුළු සේවාවන් සහ තවත් බොහෝ දේ වැනි පිටත ඇන්ඩ්‍රොයිඩ් පරිසරය සමඟ අන්තර් ක්‍රියා කිරීමට සන්දර්භය වර්තමාන ක්‍රියාකාරකමට උපකාරී වේ.

සන්දර්භය යනු පද්ධතියට හසුරුවකි. එය සම්පත් විසඳීම, දත්ත සමුදායන් හා මනාපයන් වෙත ප්‍රවේශය ලබා ගැනීම වැනි සේවාවන් සපයයි. Android යෙදුමකට ක්‍රියාකාරකම් ඇත. එය ඔබගේ යෙදුම දැනට ක්‍රියාත්මක වන පරිසරයට හසුරුවන්නාක් මෙනි. ක්‍රියාකාරකම් වස්තුවට සන්දර්භය වස්තුව උරුම වේ.

ඔබට සන්දර්භය ලබා ගත හැකි විවිධ ආයාචනා ක්‍රම 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));

මෙම සන්දර්භය තුළ ඔබට වෙනත් ක්‍රියාකාරකමකට යාමට අවශ්‍ය කුමන ක්‍රියාකාරකමෙන් අදහස් වේ. context හෝ ActivityName.this වේගවත් නම් getContext සහ getApplicatinContext.


6

Contextඅප බොහෝ කතා ඇත දේ අයදුම් . එය ඇන්ඩ්‍රොයිඩ් පද්ධතිය විසින් සාදන ලද අතර එය කළ හැක්කේ යෙදුමකට හැකි දේ පමණි. ටොම්කාට් හි, සන්දර්භය යනු මම යෙදුමක් ලෙස හඳුන්වන දෙයයි.

බොහෝ ක්‍රියාකාරකම් ඇති එක් සන්දර්භයක් ඇත, එක් එක් ක්‍රියාකාරකමට බොහෝ දර්ශන තිබිය හැකිය.

නිසැකවම, සමහරු පවසන්නේ මෙය හෝ එය නිසා එය නොගැලපෙන බවත් ඒවා බොහෝ විට නිවැරදි බවත් ය, නමුත් සන්දර්භය ඔබේ වර්තමාන යෙදුම යැයි පැවසීම ඔබ ක්‍රම පරාමිතීන් තුළට ඇතුළත් කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට උපකාරී වේ.


6

ලොක්කා සහකාර ප්‍රතිසම

සන්දර්භයෙහි තාක්‍ෂණය පිළිබඳව ගැඹුරට කිමිදීමට පෙර කුඩා ප්‍රතිසමයක් කරමු

සෑම ලොක්කාටම ඔහු වෙනුවෙන් අඩු වැදගත්කමක් සහ වැඩි කාලයක් ගත කරන සහායකයකු හෝ යමෙකු (වැරදි පිරිමි ළමයෙකු) සිටී. උදාහරණයක් ලෙස, ඔවුන්ට ලිපිගොනුවක් හෝ කෝපි අවශ්‍ය නම් සහායකයා ක්‍රියාත්මක වේ. පසුබිමේ සිදුවන්නේ කුමක්දැයි ලොක්කා නොදන්නා නමුත් ගොනුව හෝ කාර්යය භාර දෙනු ඇත

ඉතින් මෙන්න
ලොක්කා - ඇන්ඩ්‍රොයිඩ් යෙදුම
සහකාර - සන්දර්භය
ගොනුව හෝ කෝපි කෝප්පයක් - සම්පත්

නිල ඇන්ඩ්‍රොයිඩ් සංවර්ධක වෙබ් අඩවිය ගැන කුමක් පවසයිද? සන්දර්භය

සන්දර්භය ඔබේ පිවිසුම් ස්ථානයයි යෙදුම් ආශ්‍රිත සම්පත් සඳහා

එවැනි සම්පත් හෝ කාර්යයන් කිහිපයක් බලමු

  • ක්‍රියාකාරකමක් දියත් කිරීම.

  • ගොනු පද්ධතියේ යෙදුම්-විශේෂිත හැඹිලි නාමාවලියට නිරපේක්ෂ මාර්ගයක් ලබා ගැනීම.

  • ලබා දී ඇති අවසරය නිශ්චිත ක්‍රියාවලියක් සඳහා අවසර දී තිබේද යන්න සහ පද්ධතිය තුළ ක්‍රියාත්මක වන පරිශීලක හැඳුනුම්පත තීරණය කිරීම.

  • ඔබට විශේෂ අවසරයක් ලබා දී ඇත්දැයි පරීක්ෂා කිරීම.

සහ යනාදි.
එබැවින් ඇන්ඩ්‍රොයිඩ් යෙදුමකට ක්‍රියාකාරකමක් ආරම්භ කිරීමට අවශ්‍ය නම් එය කෙලින්ම යයිContext (ඇක්සස් පොයින්ට්) වෙතට යන අතර Contextපන්තිය ඔහුට සම්පත් ආපසු ලබා දෙයි (මෙම අවස්ථාවේ දී අභිප්‍රාය).

වෙනත් ඕනෑම පංතියකට මෙන් Contextක්ෂේත්‍ර හා ක්‍රම තිබේ. නිල ලියකියවිලි වලින්
ඔබට තවත් ගවේෂණය කළ හැකිය Context, එය බොහෝ දේ, පවතින ක්‍රම, ක්ෂේත්‍ර සහ ක්‍රම සමඟ ක්ෂේත්‍ර භාවිතා කරන්නේ කෙසේද යන්න ආවරණය කරයි.


හිස ඔසවා තැබීමට ස්තූතියි hdhssa. මම උත්සාහ කළේ ඇන්ඩ්‍රොයිඩ් ලියකියවිලි වල සාරාංශය සැපයීමටයි .. ෂෝල් වඩාත් ප්‍රවේශම් විය. "පිටපත් කරන ලද" කොටස ඉවත් කරන ලදි
රෝහිත් සිං

5

පංතියේ අවස්ථා android.content.Context යෙදුම ක්‍රියාත්මක කරන ඇන්ඩ්‍රොයිඩ් පද්ධතියට සම්බන්ධතාවය සපයයි. උදාහරණයක් ලෙස, ඔබට සන්දර්භය හරහා වත්මන් උපාංග සංදර්ශකයේ ප්‍රමාණය පරීක්ෂා කළ හැකිය.

එමඟින් ව්‍යාපෘතියේ සම්පත් සඳහා ප්‍රවේශය ද ලැබේ. යෙදුම් පරිසරය පිළිබඳ ගෝලීය තොරතුරු සඳහා වන අතුරු මුහුණත එයයි.

සන්දර්භය පන්තිය ඇන්ඩ්‍රොයිඩ් සේවාවන්ට ප්‍රවේශය ලබා දෙයි, උදා: කාලය පදනම් කරගත් සිදුවීම් අවුලුවාලීමට අනතුරු ඇඟවීමේ කළමනාකරු.

ක්‍රියාකාරකම් සහ සේවාවන් සන්දර්භය පන්තිය දීර් extend කරයි. එබැවින් ඒවා සන්දර්භයට ප්‍රවේශ වීම සඳහා කෙලින්ම භාවිතා කළ හැකිය.


4

ඔබට ඇන්ඩ්‍රොයිඩ් හි වෙනත් හුරුපුරුදු පන්ති සමඟ සන්දර්භය සම්බන්ධ කිරීමට අවශ්‍ය නම් , මෙම ව්‍යුහය මතක තබා ගන්න:

සන්දර්භය <ContextWrapper <යෙදුම

සන්දර්භය <ContextWrapper <ContextThemeWrapper <ක්‍රියාකාරකම

සන්දර්භය <ContextWrapper <ContextThemeWrapper <ක්‍රියාකාරකම <ListActivity

සන්දර්භය <ContextWrapper <සේවාව

සන්දර්භය <ContextWrapper <සේවාව <IntentService

ඉතින්, එම පංති සියල්ලම ඔවුන්ගේම ආකාරයෙන් සන්දර්භයන් වේ. ඔබ වීසි කළ හැකි සේවා හා ListActivity කිරීමට සංදර්භය ඔබ කැමති නම්. නමුත් ඔබ සමීපව බැලුවහොත්, සමහර පංතිවල තේමාව ද උරුම වේ. ක්‍රියාකාරකමක හෝ කැබැල්ලක දී, ඒවා ඔබේ අදහස්වලට අදාළ කර ගැනීමට ඔබ කැමති නමුත්, ඒ ගැන සැලකිලිමත් නොවන්න සේවා පන්තිය, උදාහරණයක් ලෙස.

මම මෙහි සන්දර්භයන්හි වෙනස පැහැදිලි කරමි .


4

සරලව Contextකිවහොත් , ඇන්ඩ්‍රොයිඩ් යනු ඔබ කරදර වීම නවත්වන තුරු ඔබ ආදරය නොකරන අවුලකි .

Android Contexts යනු:

  • දෙවියන්-වස්තූන්.

  • ඔබ ඇන්ඩ්‍රොයිඩ් සඳහා සංවර්ධනය කිරීම ආරම්භ කරන විට ඔබගේ සියලුම යෙදුම් පසුකර යාමට ඔබට අවශ්‍ය නමුත් එය ක්‍රමලේඛන, පරීක්ෂණ සහ ඇන්ඩ්‍රොයිඩ් වලට මඳක් සමීප වූ විට එය කිරීමෙන් වැළකී සිටියි.

    • අපැහැදිලි යැපීම.

    • මතක කාන්දු වීමේ පොදු ප්‍රභවය.

    • පරීක්ෂා කිරීම සඳහා පිටා.

  • අවසර, සම්පත්, මනාපයන්, සේවා, විකාශන, මෝස්තර, සංවාද පෙන්වීම සහ පිරිසැලසුම අවුලුවාලීමට ඇන්ඩ්‍රොයිඩ් පද්ධතිය භාවිතා කරන සත්‍ය සන්දර්භය. ඔබට Contextවෙනමම දේවල් සඳහා විවිධ අවස්ථා අවශ්‍ය වේ (පැහැදිලිවම, ඔබට යෙදුමකින් හෝ සේවා සන්දර්භයකින් සංවාදයක් පෙන්විය නොහැක; යෙදුමෙන් සහ ක්‍රියාකාරකම් සන්දර්භයන්ගෙන් උද්ධමනය වෙනස් විය හැකිය).


4

මෙම සංදර්භය එක් එක් යෙදුම-S කිරීමට ඇන්ඩ්රොයිඩ් විශේෂිත api වේ සෑන්ඩ්බොක්ස් සම්පත්, දත්ත, පෞද්ගලික filedirectories, මනාපයන්, සැකසුම් වැනි ප්රවේශ යෙදුම පෞද්ගලික දත්ත සපයන ...

එක් යෙදුමක සියලුම ක්‍රියාකාරකම් / සේවා / විකාශන ලැයිස්තුගත කරන්නන් සඳහා බොහෝ පුද්ගලික දත්ත සමාන වේ.

යෙදුම, ක්‍රියාකාරකම, සේවාව විසින් සන්දර්භය අතුරුමුහුණත ක්‍රියාත්මක කරන බැවින් api ඇමතුමකට සන්දර්භ පරාමිතියක් අවශ්‍ය වන විට ඒවා භාවිතා කළ හැකිය


4

Contextවිවිධ කාල වකවානුවල සංරචකය (හෝ යෙදුම) යන්නයි. මම ප.ව. අන්තර්ගතය යනු යම් කාලයක් සඳහා සංරචකයකි (යෙදුම). මෙම Contextඅයදුම්පත් සංරචක සංරචක ෙහෝ අයදුම් යටින් ඇති ජීව චක්රය මත පදනම් වෙනස් වෙනවා. උදාහරණයක් ලෙස, onCreate () තුළ Activity,

getBaseContext()- ලබා දෙනවා, contextමේ වන Activityක්රියාකාරකම් ඉදිකිරීමටත් විසින් (නිර්මාණය) සකසා තිබේ. getApplicationContext()- 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

ජාවා හි, මෙම මූල පදය යෙදුමේ වත්මන් වස්තුවේ තත්වය සඳහන් කරයි.
ඒ හා සමානව, Contextඇන්ඩ්‍රොයිඩ් සංවර්ධනයේ අපට ඇති විකල්පයක .

මෙය පැහැදිලිව හෝ ව්‍යංගයෙන් අර්ථ දැක්විය හැකිය,

Context con = this;

getApplicationContext();

getBaseContext();

getContext();

මා සිතන වර්තමාන ක්‍රියාකාරිත්වයේ පරමාර්ථය විය හැකිය. මම එය කිහිප වතාවක්ම මේ ආකාරයට භාවිතා කරමි.
ඔහියෝවර්

1
සන්දර්භය ලබා ගැනීම සඳහා විවිධාකාර ක්‍රම තිබේ. ඇමතීම thisක්‍රියාත්මක වන්නේ ක්‍රියාකාරකම් වල පමණි. සන්දර්භය "මෙය" සඳහා විකල්පයක් නොවේ - සන්දර්භය පද්ධති විශේෂාංග වෙත ප්‍රවේශ වීමට භාවිතා කරයි, සහ තවත් බොහෝ දේ. ඔබ සන්දර්භය ඕනෑවට වඩා සරල කරන අතර එය සමඟ ඇති ප්‍රධාන කරුණ මග හැරී ඇත.
Zoe

-10

මෙම පිරිසැලසුම පෙරනිමියෙන් මෙම පිරිසැලසුම හා සම්බන්ධ වන්නේ කුමන ක්‍රියාකාරකමකින්දැයි ප්‍රකාශ කරයි .

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.