Android四大组件之------Activity

时间:2022-02-22 17:50:02

一、概念: Activity用来提供一个能让用户操作并与之交互的界面
二、Activity的声明周期:
Android四大组件之------Activity
记住声明周期的简单方法:四种状态、七个方法、三个循环
<1>四种状态:
a.运行状态:可见也可操作
b.暂停状态:可见但不可操作
c.停止状态:不可见,但对象存在
d.死亡状态:对象不存在
<2>七种方法:
onCreat();
onStart();
onResume();
onPause();
onStop(); onRestart();
onDestroy();
<3>三个循环
①onStop()—>onRestart()—>onStart()
②onPause()—>onResume()
③onStop()—>onCreat()

三、Activity声明周期不同状态经过的方法
1)界面从“死亡”–>“运行” –>
操作方法:直接启动没有运行的程序
生命方法:onCreat()—>onstart()—>onResume()
2) 界面从“运行”–>“死亡” —>
操作方法:点击返回(back)键结束程序
生命方法:onPause()—>onStop() —> onDestroy()
3) 界面从“运行”–>“停止” —>
操作方法:点击Home键让程序从模拟器上消失
生命方法:onPause()—>onStop()
4) 界面从“停止” –>“运行”—>
操作方法:接着3)里面的操作,再次点击Home键,重新启动对应的应用
生命周期:onRestart()—>onStart()—>onResume()
5) 界面从“运行”–>“暂停” —>
操作方法:点击Home键让程序从模拟器上消失
生命方法:onPause()
6) 界面从“暂停” –>“运行”—>
操作方法:点击Home键让程序从模拟器上消失
生命方法:onResume()
四、测试声明周期的具体代码
public class MainActivity extends Activity {
private static final String TAG = “MainActivity”;
public MainActivity() {
Log.e(TAG, (“MainActivity()”));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.e(TAG, (“MainActivity onCreate()”));
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
Log.e(TAG, (“MainActivity onStart()”));
super.onStart();
}
@Override
protected void onResume() {
Log.e(TAG, (“MainActivity onResume()”));
super.onResume();
}
@Override
protected void onPause() {
Log.e(TAG, (“MainActivity onPause()”));
super.onPause();
}
@Override
protected void onStop() {
Log.e(TAG, (“MainActivity onStop()”));
super.onStop();
}
@Override
protected void onRestart() {
Log.e(TAG, (“MainActivity onRestart()”));
super.onRestart();
}
@Override
protected void onDestroy() {
Log.e(TAG, (“MainActivity onDestroy()”));
super.onDestroy();
}
public void startSecond(View v) {
startActivity(new Intent(this, SecendActivity.class));
}
}

SecondActivity的代码:
public class SecendActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secend);
}
功能清单文件里面的代码:
activity
android:name=”.SecendActivity”
android:label=”@string/title_activity_secend”
android:theme=”@android:style/Theme.Dialog” 这个主题测试到第五个的时候添加,为了方便测试 >
/activity
五、总结
1)onCreat()方法只执行一次,加载布局,初始化操作(初始化视图成员变量,设置监听)
2)onResume()方法,只有经历onResume()方法,Activity()才可以真正的运行(可见可操作)
3)onDestroy()方法,只执行一次,做一些收尾清理的工作

六、Activity里面的一些重要的API
一般启动
startActivity(Intent intent)

带回调的启动
startActivityForResult(int reqCode, Intent intent)
onActivityResult(int reqCode, int resultCode, Intent data)

如何携带额外数据
intent.putExtra(name, value)

如何获取携带的额外数据
Xxx intent.getXxxExtra(name)

如何得到启动的intent
Intent getIntent()
一般结束
finish()

带结果的结束
setResult(int resultCode, Intent data)
finish()