文章出处:http://blog.youkuaiyun.com/scarthr/article/details/41842627
说起来Android四大核心组件,大家肯定都知道是Activity、Service、BroadcastReceiver和ContentProvider,今天我们来看看第一个Activity。
一 生命周期
7个生命周期:onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()、onDestroy()。关于每一个方法的调用情况用下面这张图就可以说明了:
二 Activity样式
要设置整个应用的样式,可以在Manifest中的<application>标签内使用
android:theme="@android:style/Theme.NoTitleBar"
设置,要是只希望某一个Activity有样式,将上述代码放在<activity>标签内就可以了。
三 Activity之间传递数据
Activity之间的数据传递可以使用Intent来实现。
Intent有两种包装类型使用:
1. 直接使用putExtra(key, value);
例如:
Intent intent = new Intent();
intent.putExtra("name", "Jerry");
intent.putExtra("number", 10);
2. 创建Bundle对象,使用Bundle的putString等方法封装好数据后,用Intent的putExtras(bundle)实现。
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putStringArray("stringarray", new String[] { "第一个", "第二个" });
bundle.putStringArrayList("list", new ArrayList<String>());
intent.putExtras(bundle);
两种方法第二种所能传递的数据的种类更多一些。
四 Activity的启动和关闭
1. startActivity(Intent intent)
这种方法启动的Activity是不需要回传值的方法。
2. startActivityForResult(Intent intent, int requestCode)
在启动另一个Activity的使用使用
startActivityForResult(intent, 10);
这种可以监听回传值。使用这种方法的时候,需要在该Activity内复写onActivityResult(int requestCode, int resultCode, Intent data)方法,requestCode是启动方法中的参数,resultCode是回传回来的值,data是回传回来的可以包装数据的对象:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 在这里做你想做的事情
super.onActivityResult(requestCode, resultCode, data);
}
然后在包装回传值的Activity中需要使用setResult(int resultCode, Intent data)后调用finish()方法关闭即可实现回传值。
setResult(100);
finish();
这里的requestCode存的就是最开始的那个10,100就是在上面那个方法中resultCode中存的值。