एंड्रॉइड ऐप में सभी एक्टिविटीज़ को प्रोग्रामेटिकली समाप्त करना
यह गाइड एक ऐप की सभी एक्टिविटीज़ को एक साथ बंद करने के विभिन्न तरीकों को दर्शाता है, मॉडर्न बेस्ट प्रैक्टिसेज के साथ।
विधि 1: finishAffinity() - API 16+ (अनुशंसित)
// किसी भी एक्टिविटी से कॉल करें finishAffinity();
यह वर्तमान टास्क में सभी एक्टिविटीज़ को समाप्त करता है। सबसे सरल और मॉडर्न तरीका।
विधि 2: फ्लैग्स के साथ नई एक्टिविटी शुरू करना
Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish();
विधि 3: Activity लाइफसाइकिल कॉलबैक (लिगेसी - Process.killProcess)
Process.killProcess(Process.myPid()) का उपयोग नहीं करने की सलाह दी जाती है।
यह सिस्टम को क्लीनअप करने का मौका नहीं देता (onDestroy, onSaveInstanceState, आदि),
जिससे डेटा लॉस, रिसोर्स लीक, और खराब यूजर एक्सपीरियंस हो सकता है।
पूर्ण उदाहरण: दो एक्टिविटीज़ के साथ
MainActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnStartSecond = findViewById(R.id.button);
btnStartSecond.setOnClickListener(v -> {
startActivity(new Intent(this, SecondActivity.class));
});
}
}
SecondActivity.java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button btnExit = findViewById(R.id.terminateButton);
btnExit.setOnClickListener(v -> {
// विधि 1: सरल और अनुशंसित
finishAffinity();
// या विधि 2: यदि टास्क रूट पर वापस जाना चाहते हैं
// Intent intent = new Intent(this, MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
// startActivity(intent);
});
}
}
लेआउट फ़ाइलें
activity_main.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button"
android:layout_marginBottom="20dp"
android:gravity="center"
android:text="एक्टिविटी वन" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="सेकंड एक्टिविटी शुरू करें" />
</RelativeLayout>
activity_second.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp">
<Button
android:id="@+id/terminateButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="सभी एक्टिविटीज़ बंद करें" />
</RelativeLayout>
बेस्ट प्रैक्टिसेज
- finishAffinity() का उपयोग करें (API 16+) - सरल और प्रभावी
- लॉगआउट/एग्जिट के लिए: क्लियर टॉप फ्लैग्स के साथ मुख्य एक्टिविटी पर वापस जाएं
System.exit(0)याProcess.killProcess()से बचें- यदि बैकग्राउंड सर्विस/वर्कर चल रहे हैं, तो उन्हें अलग से रोकें
Jetpack Compose / मॉडर्न नेविगेशन
// Navigation Compose में
val navController = rememberNavController()
navController.popBackStack(route = "home", inclusive = true)
// या
navController.navigate("home") { popUpTo("home") { inclusive = true } }