यहाँ मैं क्या उपयोग के बारे में पाया गया है context
:
1)। Activity
खुद के भीतर , this
लेआउट और मेनू को बढ़ाने के लिए उपयोग करें , संदर्भ मेनू को पंजीकृत करें, विजेट्स को त्वरित करें, अन्य गतिविधियों को शुरू करें, Intent
एक Activity
, त्वरित वरीयताओं के भीतर , या एक में उपलब्ध अन्य तरीकों से नया बनाएं Activity
।
मुद्रास्फीति की रूपरेखा:
View mView = this.getLayoutInflater().inflate(R.layout.myLayout, myViewGroup);
सूजन मेनू:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
this.getMenuInflater().inflate(R.menu.mymenu, menu);
return true;
}
संदर्भ मेनू पंजीकृत करें:
this.registerForContextMenu(myView);
तत्काल विजेट:
TextView myTextView = (TextView) this.findViewById(R.id.myTextView);
प्रारंभ करें Activity
:
Intent mIntent = new Intent(this, MyActivity.class);
this.startActivity(mIntent);
त्वरित प्राथमिकताएँ:
SharedPreferences mSharedPreferences = this.getPreferenceManager().getSharedPreferences();
२)। एप्लिकेशन-वाइड क्लास के लिए, getApplicationContext()
इस संदर्भ का उपयोग अनुप्रयोग के जीवन काल के लिए मौजूद है।
वर्तमान Android पैकेज का नाम पुनः प्राप्त करें:
public class MyApplication extends Application {
public static String getPackageName() {
String packageName = null;
try {
PackageInfo mPackageInfo = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0);
packageName = mPackageInfo.packageName;
} catch (NameNotFoundException e) {
// Log error here.
}
return packageName;
}
}
एक आवेदन-व्यापक वर्ग को बांधें:
Intent mIntent = new Intent(this, MyPersistent.class);
MyServiceConnection mServiceConnection = new MyServiceConnection();
if (mServiceConnection != null) {
getApplicationContext().bindService(mIntent, mServiceConnection, Context.BIND_AUTO_CREATE);
}
३)। श्रोताओं और अन्य प्रकार की एंड्रॉइड कक्षाओं के लिए (जैसे कि ContentObserver), एक संदर्भ प्रतिस्थापन का उपयोग करें जैसे:
mContext = this; // Example 1
mContext = context; // Example 2
जहां this
या context
एक वर्ग (गतिविधि, आदि) का संदर्भ है।
Activity
संदर्भ प्रतिस्थापन:
public class MyActivity extends Activity {
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
}
श्रोता संदर्भ प्रतिस्थापन:
public class MyLocationListener implements LocationListener {
private Context mContext;
public MyLocationListener(Context context) {
mContext = context;
}
}
ContentObserver
संदर्भ प्रतिस्थापन:
public class MyContentObserver extends ContentObserver {
private Context mContext;
public MyContentObserver(Handler handler, Context context) {
super(handler);
mContext = context;
}
}
४)। के लिए BroadcastReceiver
(इनलाइन / एम्बेडेड रिसीवर सहित), रिसीवर के स्वयं के संदर्भ का उपयोग करें।
बाहरी BroadcastReceiver
:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_SCREEN_OFF)) {
sendReceiverAction(context, true);
}
private static void sendReceiverAction(Context context, boolean state) {
Intent mIntent = new Intent(context.getClass().getName() + "." + context.getString(R.string.receiver_action));
mIntent.putExtra("extra", state);
context.sendBroadcast(mIntent, null);
}
}
}
इनलाइन / एंबेडेड BroadcastReceiver
:
public class MyActivity extends Activity {
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final boolean connected = intent.getBooleanExtra(context.getString(R.string.connected), false);
if (connected) {
// Do something.
}
}
};
}
5)। सेवाओं के लिए, सेवा के स्वयं के संदर्भ का उपयोग करें।
public class MyService extends Service {
private BroadcastReceiver mBroadcastReceiver;
@Override
public void onCreate() {
super.onCreate();
registerReceiver();
}
private void registerReceiver() {
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
this.mBroadcastReceiver = new MyBroadcastReceiver();
this.registerReceiver(this.mBroadcastReceiver, mIntentFilter);
}
}
6)। टोस्ट के लिए, आम तौर पर उपयोग करते हैं getApplicationContext()
, लेकिन जहां संभव हो, गतिविधि, सेवा आदि से पारित संदर्भ का उपयोग करें।
आवेदन के संदर्भ का उपयोग करें:
Toast mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG);
mToast.show();
स्रोत से पारित संदर्भ का उपयोग करें:
public static void showLongToast(Context context, String message) {
if (context != null && message != null) {
Toast mToast = Toast.makeText(context, message, Toast.LENGTH_LONG);
mToast.show();
}
}
और अंतिम, getBaseContext()
Android के फ्रेमवर्क डेवलपर्स द्वारा सलाह के अनुसार उपयोग न करें ।
अद्यतन:Context
उपयोग के उदाहरण जोड़ें ।