android生命周期Word格式文档下载.docx

上传人:b****6 文档编号:17662385 上传时间:2022-12-08 格式:DOCX 页数:17 大小:224.41KB
下载 相关 举报
android生命周期Word格式文档下载.docx_第1页
第1页 / 共17页
android生命周期Word格式文档下载.docx_第2页
第2页 / 共17页
android生命周期Word格式文档下载.docx_第3页
第3页 / 共17页
android生命周期Word格式文档下载.docx_第4页
第4页 / 共17页
android生命周期Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

android生命周期Word格式文档下载.docx

《android生命周期Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《android生命周期Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

android生命周期Word格式文档下载.docx

activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!

onStop():

activity被停止并转为不可见阶段及后续的生命周期事件时调用。

onRestart():

重新启动activity时调用。

该活动仍在栈中,而不是启动新的活动。

onDestroy():

activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用onFinish()方法或者系统决定停止该活动以释放资源!

以上七个方法分别在四个阶段按照一定顺序调用:

1.开始Activity:

这个阶段依次执行3个生命周期方法——onCreate(),onStart(),onResume().

2.Activity失去焦点:

就是在用户不能对该Activity操作的时候,我们理解为失去了焦点。

比如在Activity获得焦点的情况下进入第二个Activity,当前的Activity将失去焦点。

在这一阶段会依次调用onPause(),onStop()

3.Activity重新获得焦点:

onRestart(),onStart(),onResume()

4.关闭Activity:

onPause(),onStop(),onDestroy

在执行这4个阶段的过程中,可以改变系统执行轨迹的生命周期方法是onPause()和onStop().如果执行onPause()方法过程中,Activity重新获得了焦点,则不会执行onStop().而是这样执行:

onPause(),onResume(),onPause.

 

下面是两个例子

第一个Activity:

packagecom.sunny.android_cycle;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.TextView;

publicclassAndroid_cycleActivityextendsActivity{

privateButtonbtn;

privateTextViewtv01;

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tv01=(TextView)findViewById(R.id.tv01);

tv01.setText(this+"

"

);

//打印activity的ID

System.out.println("

firstoncreate"

btn=(Button)findViewById(R.id.btn1);

btn.setOnClickListener(newClickEvent());

}

classClickEventimplementsOnClickListener{

publicvoidonClick(Viewv){

Intentintent=newIntent();

intent.setClass(Android_cycleActivity.this,secondActivity.class);

Android_cycleActivity.this.startActivity(intent);

//finish();

}

protectedvoidonStart(){

//TODOAuto-generatedmethodstub

System.out.println("

firstonStart"

super.onStart();

protectedvoidonRestart(){

firstonRestart"

super.onRestart();

protectedvoidonResume(){

firstonResume"

super.onResume();

protectedvoidonPause(){

firstonPause"

super.onPause();

protectedvoidonStop(){

firstonStop"

super.onStop();

protectedvoidonDestroy(){

firstonDestroy"

super.onDestroy();

}

第二个Activity:

/**

*@authorsunny

*

*/

publicclasssecondActivityextendsActivity{

privateButtonbtn2;

/*(non-Javadoc)

*@seeandroid.app.Activity#onCreate(android.os.Bundle)

super.onCreate(savedInstanceState);

setContentView(R.layout.second);

secondonCreate"

btn2=(Button)findViewById(R.id.btn02);

btn2.setOnClickListener(newClickEvent());

intent.setClass(secondActivity.this,Android_cycleActivity.class);

secondActivity.this.startActivity(intent);

secondonStart"

secondonRestart"

secondonResume"

secondonPause"

secondonStop"

secondonDestroy"

加载第一个Activity,后台的打印:

这个不用多说,我们可以看到这个Activity,并且得到了焦点。

此时在界面上可以看到Activity的ID值:

Android_cycleActivity@44ee2f00

下来点击第一个Activity的按钮,跳转到第二个Activity:

后台输出:

第一个Activity被暂停,另一个Activity执行了第一个阶段。

第一个Activity失去了焦点,不能再被看见,这时调用了第一个activity的onStop().

然后我们按手机上的回退键,回到第一个界面

可以发现,界面上的Activity的ID值是不变的!

后台的输出:

这时第二个activity暂停,开始失去焦点,而第一个activity开始重新获得焦点,开始onRestart,onStart,onResume,第二个activity不再可见,调用onStop---onDestroy。

下面我们在考虑,这次从第二个activity跳转回来,我们点击第二个界面的跳回键。

此时,注意,界面上的activity的值已经改变了!

第一个界面并没有和刚才那样从onStoponRestartonStartonResume

而是执行了onStop—>

onCreateonStartonResume.

这样我们很容易理解了,为什么第一个Activity的ID值变化了。

下面再看另一个例子,这个例子和第一个雷同,不同的是第二个Activity的形式是对话框的形式,就是并没有完全挡住第一个Activity,那么,我们可以猜测第一个Activity的onStop方法调用时机和前面一个例子可能有点不同。

第一个Activity的java代码

publicclassFirstActivityextendsActivity{

privateButtonmyButton;

FirstActivity--->

onCreate"

setContentView(R.layout.main);

tv01=(TextView)findViewById(R.id.textview01);

tv01.setText(this+"

myButton=(Button)findViewById(R.id.myButton);

myButton.setOnClickListener(newButtonListener());

FirstAcvity--->

onDestory"

onPause"

onRestart"

onResume"

onStart"

onStop"

classButtonListenerimplementsOnClickListener{

//TODOAuto-generatedmethodstub

intent.setClass(FirstActivity.this,SecondActivity.class);

FirstActivity.this.startActivity(intent);

第二个Activity的java代码

publicclassSecondActivityextendsActivity{

privateButtonsecondButton;

protectedvoidonCreate(BundlesavedInstanceState){

SecondActivity--->

onCreate"

secondButton=(Button)findViewById(R.id.secondButton);

secondButton.setOnClickListener(newButtonListener());

classButtonListenerimplementsOnClickListener{

intent.setClass(SecondActivity.this,FirstActivity.class);

SecondActivity.this.startActivity(intent);

第二个Activity是对话框的风格的,这个只要在AndroidManifest.xml中对第二个Activity进行如下注册

<

activityandroid:

name="

.SecondActivity"

android:

label="

SecondActivity"

theme="

@android:

style/Theme.Dialog"

点击按钮:

我们来看后台的输出:

这时,第一个Activity并没有完全不可见,只是失去了焦点,所以并没有调用第一个Activity的onStop().

下一步,我们点击回退键

可以看到Activity的ID是不改变的,后台输出

第二个Activity暂停了,这时第一个Activity重新获得了焦点,走的是焦点生命周期:

onPause—>

onResume—>

onPause,所以,我们得到了FirstActivity--onResume,这样的输出。

再考虑下,如果我们不是点击手机上回退键回到第一个Activity,而是点击跳回按钮返回第一个activity,我们可以大胆的说,ID值肯定不同了,第一个activity应该是onpauseonStop—>

onCreate—>

onStart—>

onResume

所以我们可以了解到onPause(),当第一个Activity使用Intent跳到第二个Activity,将先调用第一个Activity的onPause(),然后是第二个Activity的onCreate,onStart,onResume.如果第二个Activity挡住了第一个Activity,那么将下面调用的是第一个Activity的onStop();

这样以后第一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1