一、Activity的生命周期
1.方法定义
onCreate()方法:Activity第一次被创建时调用,总继之以onStart();
onStart()方法:当Activity正要变得为用户所见时调用,且当Activity重新获得用户焦点时继之以onResume(),而在Activity变为隐藏时继之以onStop();
onRestart()方法:Activity停止后,在再次启动之前被调用,总继之以onStart();
onResume()方法:当Activity获得用户焦点时调用,在失去用户焦点时继之以onPause();
onPause()方法:当Activity失去用户焦点时调用,在重新获得用户焦点时继之以onResume(),而当其变为不可见时继之以onStop();
onStop()方法:当Activity不再为用户所见时调用,在重新获得用户焦点时继以onRestart(),如果使用finish()关闭了当前Activity则继以onDestroy();
onDestroy():使用finish()销毁当前Activity时调用。
2.常见的生命周期切换过程
(1)启动Activity1:
(2)Activity1跳转到Activity2:
(3)销毁Activity2后:
(4)横竖屏的切换:
(5)当设置android:configChanges="orientation|keyboardHidden"时,横竖屏的切换:
但是,当API版本过高时,横竖屏切换并不执行onConfigurationChanged()方法,横竖屏切换如(4)
二、Activity之间的数据传递
1.方法一(putExtra()的使用):
(1)发送数据
<span style="white-space:pre"> </span>Intent intent = new Intent(MainActivity.this,
<span style="white-space:pre"> </span>SkipActivity.class);
<span style="white-space:pre"> </span>intent.putExtra("txt", "Hello SkipActivity");
<span style="white-space:pre"> </span>startActivity(intent);
(2)接收数据
String getString = getIntent().getStringExtra("txt");
Toast.makeText(SkipActivity.this, getString, Toast.LENGTH_SHORT)
.show();
2.方法二(putExtras(Bundle bundle)方式):
(1)发送数据
<span style="font-size:18px;"> Intent intent = new Intent(MainActivity.this,
SkipActivity.class);
Bundle bundle = new Bundle();
bundle.putString("txt", "How are you,SkipActivity");
intent.putExtras(bundle);
startActivity(intent);</span>
(2)接收数据
Bundle bundle = getIntent().getExtras();
String getString = bundle.getString("txt");
Toast.makeText(SkipActivity.this, getString, Toast.LENGTH_SHORT)
.show();
3.获取跳转过的Activity返回的数据
(1)发送数据: Intent intent=getIntent();
intent.putExtra("result", "Hello MainActivity");
setResult(0, intent);
finish();
Intent intent=getIntent();
intent.putExtra("result", "Hello MainActivity");
setResult(0, intent);
finish();
(2)接收数据:
Intent intent = new Intent(MainActivity.this,
SkipActivity.class);
startActivityForResult(intent, 0);
标志0用来区分不同的Activity返回的数据
此外必须重写onActivityResult(……)方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = data.getStringExtra("result");
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
super.onActivityResult(requestCode, resultCode, data);
}