फोरग्राउंड एक्टिविटी कॉन्टेक्स्ट प्राप्त करना
यह उदाहरण दर्शाता है कि एप्लिकेशन क्लास का उपयोग करके वर्तमान में विजिबल (फोरग्राउंड) एक्टिविटी का कॉन्टेक्स्ट कैसे ट्रैक करें। यह तब उपयोगी होता है जब आपको ग्लोबल कॉन्टेक्स्ट की आवश्यकता होती है, जैसे नोटिफिकेशन या बैकग्राउंड टास्क में।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें और बेसिक डिटेल्स भरें।
चरण 2: MyApp.java (एप्लिकेशन क्लास) बनाएं
package app.tutorialspoint.com.sample;
import android.app.Activity;
import android.app.Application;
public class MyApp extends Application {
private Activity mCurrentActivity = null;
@Override
public void onCreate() {
super.onCreate();
}
public Activity getCurrentActivity() {
return mCurrentActivity;
}
public void setCurrentActivity(Activity mCurrentActivity) {
this.mCurrentActivity = mCurrentActivity;
}
}
चरण 3: MyBaseActivity.java (बेस एक्टिविटी) बनाएं
package app.tutorialspoint.com.sample;
import android.app.Activity;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MyBaseActivity extends AppCompatActivity {
protected MyApp mMyApp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMyApp = (MyApp) getApplicationContext();
}
@Override
protected void onResume() {
super.onResume();
mMyApp.setCurrentActivity(this);
}
@Override
protected void onPause() {
clearReferences();
super.onPause();
}
@Override
protected void onDestroy() {
clearReferences();
super.onDestroy();
}
private void clearReferences() {
Activity currActivity = mMyApp.getCurrentActivity();
if (this.equals(currActivity)) {
mMyApp.setCurrentActivity(null);
}
}
}
चरण 4: MainActivity.java में उपयोग करें
package app.tutorialspoint.com.sample;
import android.app.Activity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Activity currentActivity = ((MyApp) getApplicationContext()).getCurrentActivity();
// currentActivity का उपयोग करें
}
}
चरण 5: AndroidManifest.xml में रजिस्टर करें
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.sample">
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MyBaseActivity" />
</application>
</manifest>
महत्वपूर्ण नोट्स
- सभी एक्टिविटीज को
MyBaseActivityसे एक्सटेंड करना चाहिए ताकि ट्रैकिंग काम करे। onPauseऔरonDestroyमें रेफरेंस क्लियर करना मेमोरी लीक रोकता है।- आधुनिक एंड्रॉइड में
ActivityLifecycleCallbacksयाProcessLifecycleOwner(Jetpack Lifecycle) का उपयोग करना अधिक बेहतर है।