यदि आपका ऐप नहीं किया गया "समाप्त" है तो # 1 पहले से ही काम करना चाहिए और # 2 बस onSaveInstanceState() में कोई मान जो बंडल में स्वतः प्रबंधित नहीं किया जाता बचत तो onRestoreInstanceState() में उन्हें बहाल करने की आवश्यकता है।
यह एक हैक की तरह है, लेकिन मुझे लगता है कि वास्तव में समाप्त होने वाले ऐप के मामले में # 1 के लिए आपका सबसे अच्छा विकल्प होगा, जब आप पहली बार अपने प्रत्येक गतिविधि कक्षाओं के रेस्यूम में सबसे हालिया गतिविधि को सहेज लेंगे अपनी पहली गतिविधि के क्रिएट को चलाएं चेक करें, फिर सही गतिविधि शुरू करें ... शायद शुरुआत में भी एक खाली गतिविधि में डाल दें। कुछ इस तरह:
StartActivity:
public class StartActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get last open Activity
String lastActivity = PreferenceManager.getDefaultSharedPreferences(this).getString("last_activity", "");
if (last_activity == MyActivity2.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity2.class));
} else if (last_activity == MyActivity3.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity3.class));
} else {
// assume default activity
startActivityForResult(new Intent(this, MyActivity1.class));
}
}
public void onActivityResult() {
// kill the activity if they go "back" to here
finish();
}
}
फिर अन्य सभी गतिविधियां (MyActivity1,2,3) तो जैसे मूल्यों को बचाने में
:
@Override
public void onResume() {
Editor e = PreferenceManager.getDefaultSharedPreferences(this).edit();
e.putString("last_activity", getClass().getSimpleName());
e.commit();
super.onResume();
}
तुम भी संभाल करने के लिए होगा मैन्युअल रूप से प्रत्येक गतिविधि के लिए डेटा को सहेजना/बहाल करना। आप प्रत्येक क्रियाकलाप के ऑनपॉज़() के अंदर वरीयताओं में आवश्यक सभी मूल्यों को सहेज सकते हैं, फिर इसे ऑनस्यूम() में पुनर्स्थापित कर सकते हैं।
स्रोत
2009-09-20 08:19:38
धन्यवाद fiXedd, मुझे नहीं लगता कि यह एक हैक है। यह एक प्रेषक पैटर्न की तरह लगता है। मैं बस उम्मीद कर रहा था कि मुझे कुछ याद आ रहा है और ऐसा करने का एक आसान तरीका है। – Bostone
स्टार्ट एक्टिविटी के बारे में कैसे करें और फिर स्टार्ट एक्टिविटीफॉर रिसेट के बजाय बस() खत्म करें? –
मैनिफेस्ट में अपनी गतिविधि लॉन्च मोड सेटिंग पर भी ध्यान दें। मैंने इसे "सिंगल टास्क" पर सेट किया था, लेकिन इसे अंतिम गतिविधि को फिर से शुरू करने के लिए इसे "सिंगलटॉप" में बदल दिया। मुझे http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode पर एक अच्छा स्पष्टीकरण मिला –