अत्यधिक मूल्यांकित उत्तर के शीर्ष पर कुछ और जानकारी जोड़ना (किलबेल के अतिरिक्त खंड और विधियों के अगले सेट, जिन्हें जीवन चक्र कहा जा रहा है):
स्रोत: developer.android.com
ध्यान दें " किलकारीउपरोक्त तालिका में " कॉलम को - उन तरीकों के लिए जिन्हें मारने योग्य होने के रूप में चिह्नित किया गया है, उस पद्धति के बाद प्रक्रिया को होस्ट करने वाली प्रक्रिया किसी भी समय सिस्टम द्वारा अपने कोड को निष्पादित किए बिना किसी भी समय मारा जा सकता है।
इस वजह से, आपको onPause()
स्टोर करने के लिए किसी भी लगातार डेटा (जैसे उपयोगकर्ता संपादन) को लिखने के लिए विधि का उपयोग करना चाहिए । इसके अलावा, इस onSaveInstanceState(Bundle)
तरह की पृष्ठभूमि की स्थिति में गतिविधि रखने से पहले विधि को बुलाया जाता है, जिससे आपको अपनी गतिविधि में किसी भी गतिशील आवृत्ति स्थिति को दिए जाने से बचाने के लिए अनुमति दी Bundle
जा सकती है, जिसे बाद में प्राप्त किया जा सकता है onCreate(Bundle)
यदि गतिविधि को फिर से बनाया जाना है।
ध्यान दें कि इसके onPause()
बजाय लगातार डेटा को सहेजना महत्वपूर्ण है onSaveInstanceState(Bundle)
क्योंकि उत्तरार्द्ध जीवनचक्र कॉलबैक का हिस्सा नहीं है, इसलिए इसे हर स्थिति में नहीं बुलाया जाएगा जैसा कि इसके प्रलेखन में वर्णित है।
मैं कुछ और तरीके जोड़ना चाहूंगा। इन्हें जीवन चक्र विधियों के रूप में सूचीबद्ध नहीं किया गया है, लेकिन कुछ स्थितियों के आधार पर उन्हें जीवन चक्र के दौरान बुलाया जाएगा। अपनी आवश्यकता के आधार पर, आपको राज्य के उचित संचालन के लिए अपने आवेदन में इन विधियों को लागू करना पड़ सकता है।
onPostCreate(Bundle savedInstanceState)
कहा जाता है जब गतिविधि स्टार्ट-अप पूरा हो गया है (के बाद onStart()
और onRestoreInstanceState(Bundle)
बुलाया गया है)।
onPostResume()
गतिविधि फिर से शुरू होने पर ( onResume()
जिसे कॉल किया गया है) पूरा होने पर कॉल किया जाता है।
onSaveInstanceState(Bundle outState)
मारे जाने से पहले एक गतिविधि से प्रति-आवृत्ति राज्य को पुनः प्राप्त करने के लिए कहा जाता है ताकि राज्य को फिर से बहाल किया जा सके onCreate(Bundle)
या onRestoreInstanceState(Bundle)
(इस विधि द्वारा आबाद बंडल दोनों को पारित किया जाएगा)।
onRestoreInstanceState(Bundle savedInstanceState)
इस पद्धति को onStart()
उस समय के बाद कहा जाता है जब गतिविधि को पहले से सहेजे गए राज्य से पुनः आरंभ किया जा रहा हो, यहां दिया गया हो savedInstanceState
।
इन सभी विधियों का उपयोग करके मेरा आवेदन कोड:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText txtUserName;
private EditText txtPassword;
Button loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("Ravi","Main OnCreate");
txtUserName=(EditText) findViewById(R.id.username);
txtPassword=(EditText) findViewById(R.id.password);
loginButton = (Button) findViewById(R.id.login);
loginButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Log.d("Ravi", "Login processing initiated");
Intent intent = new Intent(this,LoginActivity.class);
Bundle bundle = new Bundle();
bundle.putString("userName",txtUserName.getText().toString());
bundle.putString("password",txtPassword.getText().toString());
intent.putExtras(bundle);
startActivityForResult(intent,1);
// IntentFilter
}
public void onActivityResult(int requestCode, int resultCode, Intent resIntent){
Log.d("Ravi back result:", "start");
String result = resIntent.getStringExtra("result");
Log.d("Ravi back result:", result);
TextView txtView = (TextView)findViewById(R.id.txtView);
txtView.setText(result);
Intent sendIntent = new Intent();
//sendIntent.setPackage("com.whatsapp");
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Message...");
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
@Override
protected void onStart() {
super.onStart();
Log.d("Ravi","Main Start");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("Ravi","Main ReStart");
}
@Override
protected void onPause() {
super.onPause();
Log.d("Ravi","Main Pause");
}
@Override
protected void onResume() {
super.onResume();
Log.d("Ravi","Main Resume");
}
@Override
protected void onStop() {
super.onStop();
Log.d("Ravi","Main Stop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Ravi","Main OnDestroy");
}
@Override
public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onPostCreate(savedInstanceState, persistentState);
Log.d("Ravi","Main onPostCreate");
}
@Override
protected void onPostResume() {
super.onPostResume();
Log.d("Ravi","Main PostResume");
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
}
लॉगिन गतिविधि:
public class LoginActivity extends AppCompatActivity {
private TextView txtView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
txtView = (TextView) findViewById(R.id.Result);
Log.d("Ravi","Login OnCreate");
Bundle bundle = getIntent().getExtras();
txtView.setText(bundle.getString("userName")+":"+bundle.getString("password"));
//Intent intent = new Intent(this,MainActivity.class);
Intent intent = new Intent();
intent.putExtra("result","Success");
setResult(1,intent);
// finish();
}
}
आउटपुट: (विराम से पहले)
D/Ravi: Main OnCreate
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume
आउटपुट: (पॉज़ से फिर से शुरू होने के बाद)
D/Ravi: Main ReStart
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume
ध्यान दें कि onPostResume()
भले ही इसे जीवन चक्र विधि के रूप में उद्धृत नहीं किया गया हो।