package com.ocular.htcvive.activitylifecycletest; import android.app.Activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.Window; import android.widget.Button; public class MainActivity extends Activity { public static final String TAG="MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG,"onCreate"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Button startNormalActivity=(Button)findViewById(R.id.start_normal_activity); Button startDialogActivity=(Button)findViewById(R.id.start_dialog_activity); startNormalActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,NormalActivity.class); startActivity(intent); } }); startDialogActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,DialogActivity.class); startActivity(intent); } }); } @Override protected void onStart(){ super.onStart(); Log.d(TAG,"onStart"); } @Override protected void onResume(){ super.onResume(); Log.d(TAG,"onResume"); } @Override protected void onPause(){ super.onPause(); Log.d(TAG,"onPause"); } @Override protected void onStop(){ super.onStop(); Log.d(TAG,"onStop"); } @Override protected void onRestart(){ super.onRestart(); Log.d(TAG,"onRestart"); } @Override protected void onDestroy(){ super.onDestroy(); Log.d(TAG,"onDestroy"); } }
如上面MainActivity代码所示,这是本人买的一本安卓开发教程上的一个体会活动生命周期的示例代码,然后讲到活动数据保存的问题时,书本叙述如下所示
之后上面百度了相关信息
本人的问题是:1.教材上面说的添加onSaveInstanceState()方法和修改onCreate()方法可以保存数据,那么onSaveInstanceState()方法的参数是怎么传进onCreate()方法内的
2.百度到的相关信息上说系统内存不足时会回收,activity的实例会被回收,本人想问问具体是怎么的情况才会回收activity
谢谢各位!
解决方案
30
少年 onSaveInstanceState 这个玩意是你activity A被压入栈中,在系统算法中,例如此时系统内存不足啊,A就会被杀死,A的相关状态值就会被被保存,以Bundle的形式onSaveInstanceState,在系统再次有内存时,它会认为故意杀死acitivityA是不道德的,那么此时系统就会重新把A 创建,同时拿出onSaveInstanceState,此时走的就是oncreate方法。