Yüksek puanlı cevabın üzerine biraz daha bilgi eklemek (ÖLDÜRÜLEN ek bölüm ve yaşam döngüsünde çağrılacak olan bir dizi yöntem eklendi):
Kaynak: developer.android.com
" Killable "Yukarıdaki tabloda " sütununa dikkat edin - killable olarak işaretlenen yöntemler için, bu yöntem döndükten sonra etkinliği barındıran işlem, kodunun başka bir satırı yürütülmeden herhangi bir zamanda sistem tarafından öldürülebilir.
Bu nedenle, onPause()
depoya kalıcı veriler (kullanıcı düzenlemeleri gibi) yazmak için yöntemi kullanmalısınız . Buna ek olarak, yöntem onSaveInstanceState(Bundle)
, etkinliği böyle bir arka plan durumuna getirmeden önce çağrılır ve etkinliğinizin yeniden oluşturulması Bundle
gerektiğinde daha sonra alınmak üzere etkinliğinizdeki herhangi bir dinamik örnek durumunu belirli bir alana kaydetmenize olanak tanır onCreate(Bundle)
.
Kalıcı verilerin onPause()
yerine kaydedilmesinin önemli olduğunu unutmayın .onSaveInstanceState(Bundle)
çünkü ikincisi yaşam döngüsü geri çağrılarının bir parçası olmadığından, belgelerinde açıklandığı gibi her durumda çağrılmayacaktır.
Birkaç yöntem daha eklemek istiyorum. Bunlar yaşam döngüsü yöntemleri olarak listelenmez, ancak bazı koşullara bağlı olarak yaşam döngüsü sırasında çağrılacaktır. Gereksiniminize bağlı olarak, durumun uygun şekilde işlenmesi için bu yöntemleri uygulamanızda uygulamanız gerekebilir.
onPostCreate(Bundle savedInstanceState)
Etkinlik başlatma tamamlandığında çağrılır (sonra onStart()
ve onRestoreInstanceState(Bundle)
çağrılır).
onPostResume()
Etkinlik devam ettirme tamamlandığında ( onResume()
çağrıldıktan sonra ) çağrılır.
onSaveInstanceState(Bundle outState)
Durumun geri yüklenebilmesi için öldürülmeden önce bir etkinlikten örnek durumu almaya çağrılır onCreate(Bundle)
veya onRestoreInstanceState(Bundle)
(bu yöntemle doldurulan Paket her ikisine de aktarılır).
onRestoreInstanceState(Bundle savedInstanceState)
Bu yöntem, onStart()
etkinlik burada önceden kaydedilmiş bir durumdan yeniden başlatıldıktan sonra çağrılır savedInstanceState
.
Tüm bu yöntemleri kullanarak uygulama kodum:
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);
}
}
Giriş Etkinliği:
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();
}
}
çıktı: (Duraklatmadan önce)
D/Ravi: Main OnCreate
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume
çıktı: (Duraklattıktan sonra devam)
D/Ravi: Main ReStart
D/Ravi: Main Start
D/Ravi: Main Resume
D/Ravi: Main PostResume
onPostResume()
Yaşam döngüsü yöntemi olarak belirtilmese de çağrıldığını unutmayın .