Activity是Android的大组件之一,代表了一个具有用户界面的单一屏幕;
它主要有七个调用的方法:
onCreate(): //用来显示Activity或初始化其中的组件或事件处理
onStart():在Activity可见时执行
onRestart():回到最上边的界面,再次可见时执行,会重新调用onStart()
onResume():获取焦点时执行
onPause():失去焦点时执行
onStop():不可见进入后台时执行
onDestroy():销毁时执行
onSaveInstanceState(Bundle outState) 方法
onSaveInstanceState函数是Activity的生命周期函数
outState 参数作用 :
数据保存 : Activity 声明周期结束的时候, 需要保存 Activity 状态的时候, 会将要保存的数据使用键值对的形式 保存在 Bundle 对象中;
恢复数据 : 在 Activity 的 onCreate()方法 创建 Activity 的时候会传入一个 Bundle 对象, 这个 Bundle 对象就是这个 outState 参数;
[想了解点这里](https://blog.csdn.net/u011068702/article/details/70217576/?ops_request_misc=&request_id=&biz_id=102&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0)
另外:activity有三种状态:运行状态,暂停状态,停止状态。
在状态变化时,Activity会调用方法;
public class MainActivity extends Activity {
String msg = "Android : ";
/** 当活动第一次被创建时调用 */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(msg, "The onCreate() event");
// 最主要调用的方法,Android系统初始化它的程序是通过活动中的 onCreate() 回调的调用开始的。
}
/** 当活动即将可见时调用 */
@Override
protected void onStart() {
super.onStart();
Log.d(msg, "The onStart() event");
//在oncreate()后立即调用;也多在再次启动程序时调用
}
/** 当活动可见时调用 */
@Override
protected void onResume() {
super.onResume();
Log.d(msg, "The onResume() event");
}
/** 当其他活动获得焦点时调用 */
@Override
protected void onPause() {
super.onPause();
Log.d(msg, "The onPause() event");
}
/** 当活动不再可见时调用 */
@Override
protected void onStop() {
super.onStop();
Log.d(msg, "The onStop() event");
}
/** 当活动将被销毁时调用 */
@Override
public void onDestroy() {
super.onDestroy();
Log.d(msg, "The onDestroy() event");
}
}
在Activity创建时 要在AndroidManifest里声明:
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
//可以设置名字:android:label="mingzi"
//也可以设置主题android:theme="@style/&^^^"
//排序模式:screenOrientation=" "
//启动模式:launchMode=" "
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
//这里是设置了是主程序运行;
</intent-filter>
</activity>
下面来讲讲程序之间的切换:
组件之间的通讯主要由Intent协助完成。Intent负责对应用中一次操作的Action(动作)、Action涉及的Data(数据)、Extras(附加数据)进行描述,Android 则根据 Intent 的描述,找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。因此,Intent 在这里起着一个媒体中介的作用,专门提供组件间互相调用的相关信息,实现调用者与被调用者之间的解耦。
最简单的调用方法:
Intent intent =new Intent(MainActivity.this,Main2Activity.class);
startActvity(intent);
假如要传递数据:
intent中可以存放:启动Activity时传递数据,Intent对象的putExtra()方法;之后用Intent对象的get……Extra()获取
//在第一个Activity中:
string name_str=view.getText().toString();
Intent putExtra("username",name_str); //这里时用来传递数据,是键值对形式
startActvity(intent);
在第二个Activity中
Intent intent=getIntent();
string username= intent.getStringExtra("username");
又假如要两个来回传递数据:
startActivityForResult(intent,requestCode);//这里的requestCode要注意一下
protected void onActivityResult(int requestCode,int resultCode,Intent data){//resultCode从第二个Activity那传递过来,用来配对;data是传过来的数据
super.onActivityResult(requestCode,resultCode,data);//这里只是继承一下,下面继续对数据进行操作;
…………
}
第二个activity
Intent intent=getIntent();
Intent putExtra("username","123")
setResult(resultCode,intent)//这里的resultCode完成配对;
finish();