Android में Activities के बीच डेटा पास करने के कई तरीके हैं। यह ट्यूटोरियल दो सबसे सरल दृष्टिकोणों को कवर करता है: Static Variables (स्टेटिक वेरिएबल्स) और Intents (इंटेंट्स)। दोनों गैर-स्थायी डेटा स्थानांतरण के लिए उपयुक्त हैं।
विधि 1: Static Variables का उपयोग करना
यह दृष्टिकोण पहले Activity में एक static फ़ील्ड का उपयोग करता है जिसे दूसरे Activity द्वारा एक्सेस किया जाता है।
चरण 1-2: प्रोजेक्ट और लेआउट सेटअप
नया प्रोजेक्ट बनाएं: StaticVsIntentDemo। activity_main.xml पहले के समान (EditText + Button)।
चरण 3: MainActivity में Static Variable
package com.example.staticvsintentdemo;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static String staticValue;
public static String getStaticValue() {
return staticValue;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = findViewById(R.id.edit_text);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
staticValue = editText.getText().toString().trim();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
चरण 4-5: SecondActivity लेआउट और कोड
activity_second.xml - TextView। SecondActivity.java:
package com.example.staticvsintentdemo;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView textView = findViewById(R.id.text_view);
textView.setText("Static Method: " + MainActivity.getStaticValue());
}
}
विधि 2: Intents का उपयोग करना (अनुशंसित)
यह मानक Android तरीका है जिसमें putExtra() का उपयोग किया जाता है।
चरण 3 (वैकल्पिक): MainActivity में Intent Extra
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value = editText.getText().toString().trim();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("intent_key", value); // डेटा Intent में जोड़ें
startActivity(intent);
}
});
चरण 5 (वैकल्पिक): SecondActivity में पुनर्प्राप्त करें
String value = getIntent().getStringExtra("intent_key");
textView.setText("Intent Method: " + (value != null ? value : "डेटा नहीं"));
दोनों दृष्टिकोणों की तुलना
| पहलू | Static Variable | Intent Extra |
|---|---|---|
| सरलता | बहुत सरल | सरल |
| जीवनचक्र सुरक्षा | कम (प्रोसेस डेथ पर खो जाता है) | उच्च (सिस्टम द्वारा प्रबंधित) |
| मेमोरी लीक जोखिम | उच्च (यदि बड़े ऑब्जेक्ट्स रखे गए) | कम |
| डेटा प्रकार समर्थन | कोई भी ऑब्जेक्ट | प्राथमिक, String, Parcelable, Serializable |
| थ्रेड सुरक्षा | मैन्युअल सिंक्रनाइज़ेशन आवश्यक | N/A (इम्युटेबल डेटा) |
| उपयोग मामला | त्वरित प्रोटोटाइप, सरल ऐप्स | उत्पादन ऐप्स, मानक अभ्यास |
Manifest कॉन्फ़िगरेशन (दोनों के लिए समान)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.staticvsintentdemo">
<application
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=".SecondActivity" />
</application>
</manifest>
आधुनिक विकल्प (बेहतर अभ्यास)
- ViewModel (Jetpack): जीवनचक्र-जागरूक, कॉन्फ़िगरेशन परिवर्तनों से बचता है।
- SharedPreferences: छोटे स्थायी डेटा के लिए।
- Room Database: संरचित स्थायी डेटा के लिए।
- WorkManager: पृष्ठभूमि डेटा सिंक के लिए।
निष्कर्ष
जबकि Static Variables त्वरित परीक्षण के लिए सबसे तेज़ हैं, Intent Extras उत्पादन Android विकास के लिए मानक, सुरक्षित और अनुशंसित दृष्टिकोण है। आधुनिक ऐप्स के लिए, आर्किटेक्चर घटकों जैसे ViewModel या LiveData का उपयोग करने पर विचार करें।