इस स्थिति के लिए, मैं दो में से एक के लिए जाऊँगा, singleTask
Manifest.xml या एक ध्वज में गतिविधि के दशक में onResume()
औरonDestroy()
मेथड्स में क्रमशः ।
के लिए पहले समाधान: मैं का उपयोग करना पसंद singleTask
के बजाय प्रकट में गतिविधि के लिए singleInstance
, का उपयोग कर के अनुसार singleInstance
मैं पता लगा है कि कुछ अवसरों में गतिविधि में ही के लिए एक नया अलग उदाहरण है, जिसमें चल रहे एप्लिकेशन में एक दो अलग-अलग आवेदन पत्र खिड़की के लिए परिणाम बनाने bcakground में और अतिरिक्त मेमोरी एलोकेशन के अलावा, जो उपयोगकर्ता को एप्लिकेशन को फिर से शुरू करने के लिए कुछ ऐप चुनने के लिए एप्लिकेशन को खोलने पर एक बहुत बुरा उपयोगकर्ता अनुभव देगा। तो, बेहतर तरीका यह है कि गतिविधि को निम्नलिखित की तरह मैनिफ़ेस्ट.xml पर परिभाषित किया जाए:
<activity
android:name=".MainActivity"
android:launchMode="singleTask"</activity>
आप यहां गतिविधि लॉन्च मोड की जांच कर सकते हैं ।
के लिए दूसरा समाधान, तो आप सिर्फ एक स्थिर चर या एक प्राथमिकता चर, उदाहरण के लिए परिभाषित करने के लिए है:
public class MainActivity extends Activity{
public static boolean isRunning = false;
@Override
public void onResume() {
super.onResume();
// now the activity is running
isRunning = true;
}
@Override
public void onDestroy() {
super.onDestroy();
// now the activity will be available again
isRunning = false;
}
}
और दूसरी तरफ से जब आप इस गतिविधि को लॉन्च करना चाहते हैं, तो बस जांचें:
private void launchMainActivity(){
if(MainActivity.isRunning)
return;
Intent intent = new Intent(ThisActivity.this, MainActivity.class);
startActivity(intent);
}