Android生命周期二——Task,DialogActivity
来源:互联网 发布:融资担保 网络业务 编辑:程序博客网 时间:2024/06/05 05:07
Task
Task是一个栈,有压,弹两个动作,顺序先进后出。可以把Task看作是一个应用程序所有Activity的一个容器,它把所有的Activity组织在一起,让用户感觉应用程序是一个整体。
应用程序启动第一个Activity后,该Activity会被压入到栈中,
点击第二个Activity后,该Activity会被压入到栈中……
记住一点,程序只会显示在栈顶的Activity。如果Activity调用了finish方法,则会被销毁,从栈中踢出去。
直接上代码:
package com.zhd.lc;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class FirstActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.firstactivity);Button btnFirst = (Button) findViewById(R.id.btnFirst);btnFirst.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.setClass(FirstActivity.this, SecondActivity.class);FirstActivity.this.startActivity(intent);}});}@Overrideprotected void onStart() {super.onStart();System.out.println("FirstActivity---->onStart");}@Overrideprotected void onRestart() {super.onRestart();System.out.println("FirstActivity---->onRestart");}@Overrideprotected void onResume() {super.onResume();System.out.println("FirstActivity---->onResume");}@Overrideprotected void onPause() {super.onPause();System.out.println("FirstActivity---->onPause");}@Overrideprotected void onStop() {super.onStop();System.out.println("FirstActivity---->onStop");}@Overrideprotected void onDestroy() {super.onDestroy();System.out.println("FirstActivity---->onDestroy");}}
package com.zhd.lc;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class SecondActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.secondactivity);Button btnSecond = (Button) findViewById(R.id.btnSecond);btnSecond.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.setClass(SecondActivity.this, ThirdActivity.class);SecondActivity.this.startActivity(intent);SecondActivity.this.finish();}});}protected void onStart() {super.onStart();System.out.println("SecondActivity---->onStart");}@Overrideprotected void onRestart() {super.onRestart();System.out.println("SecondActivity---->onRestart");}@Overrideprotected void onResume() {super.onResume();System.out.println("SecondActivity---->onResume");}@Overrideprotected void onPause() {super.onPause();System.out.println("SecondActivity---->onPause");}@Overrideprotected void onStop() {super.onStop();System.out.println("SecondActivity---->onStop");}@Overrideprotected void onDestroy() {super.onDestroy();System.out.println("SecondActivity---->onDestroy");}}
package com.zhd.lc;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ThirdActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.thirdactivity);Button btnThird = (Button) findViewById(R.id.btnThird);btnThird.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.setClass(ThirdActivity.this, FirstActivity.class);ThirdActivity.this.startActivity(intent);}});}protected void onStart() {super.onStart();System.out.println("ThirdActivity---->onStart");}@Overrideprotected void onRestart() {super.onRestart();System.out.println("ThirdActivity---->onRestart");}@Overrideprotected void onResume() {super.onResume();System.out.println("ThirdActivity---->onResume");}@Overrideprotected void onPause() {super.onPause();System.out.println("ThirdActivity---->onPause");}@Overrideprotected void onStop() {super.onStop();System.out.println("ThirdActivity---->onStop");}@Overrideprotected void onDestroy() {super.onDestroy();System.out.println("ThirdActivity---->onDestroy");}}
其他的布局文件等……就不上代码了,注意SecondActivity.this.finish(); 这句代码,会将SecondActivity从栈中踢出去,从而你在显示ThirdActivity,点击返回按钮时,会直接跳到FirstActivity去了,请看下面的方法调用顺序
03-07 09:52:48.897: INFO/System.out(312): FirstActivity---->onPause
03-07 09:52:49.127: INFO/System.out(312): SecondActivity---->onStart
03-07 09:52:49.136: INFO/System.out(312): SecondActivity---->onResume
03-07 09:52:49.516: INFO/System.out(312): FirstActivity---->onStop
03-07 09:52:50.837: INFO/System.out(312): SecondActivity---->onPause
03-07 09:52:50.938: INFO/System.out(312): ThirdActivity---->onStart
03-07 09:52:50.947: INFO/System.out(312): ThirdActivity---->onResume
03-07 09:52:51.307: INFO/System.out(312): SecondActivity---->onStop
03-07 09:52:51.315: INFO/System.out(312): SecondActivity---->onDestroy
03-07 09:52:52.677: INFO/System.out(312): ThirdActivity---->onPause
03-07 09:52:52.775: INFO/System.out(312): FirstActivity---->onStart
03-07 09:52:52.775: INFO/System.out(312): FirstActivity---->onResume
03-07 09:52:53.156: INFO/System.out(312): ThirdActivity---->onStop
03-07 09:53:05.316: INFO/System.out(312): FirstActivity---->onPause //可以看到并没有返回到SecondActivity
03-07 09:53:05.496: INFO/System.out(312): ThirdActivity---->onRestart
03-07 09:53:05.527: INFO/System.out(312): ThirdActivity---->onStart
03-07 09:53:05.527: INFO/System.out(312): ThirdActivity---->onResume
03-07 09:53:06.067: INFO/System.out(312): FirstActivity---->onStop
03-07 09:53:06.086: INFO/System.out(312): FirstActivity---->onDestroy
DialogActivity
对话框式的Activity,在代码编写上和普通的Activity没有区别,我们主要看一下他的生命周期
代码就不上了,DialogActivity实现主要就是在AndroidManifest.xml文件中指定一个属性即可:
.DialogActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Dialog" />
android:theme="@android:style/Theme.Dialog"这一句就是DialogActivity对话框的实现,简单吧。当然这只是最简单的一个对话框,Android提供了一系列的对话框,后面系统学习。
DialogActivity对话框的生命周期
03-10 07:09:29.203: INFO/System.out(237): FirstActivity---->onPause
03-10 07:09:29.443: INFO/System.out(237): SecondActivity---->onStart
03-10 07:09:29.453: INFO/System.out(237): SecondActivity---->onResume
03-10 07:09:29.802: INFO/System.out(237): FirstActivity---->onStop
03-10 07:09:35.782: INFO/System.out(237): SecondActivity---->onPause
03-10 07:09:35.983: INFO/System.out(237): ThirdActivity---->onStart
03-10 07:09:35.983: INFO/System.out(237): ThirdActivity---->onResume
03-10 07:09:36.323: INFO/System.out(237): SecondActivity---->onStop
03-10 07:09:38.282: INFO/System.out(237): ThirdActivity---->onPause //可以看到这里并没有调用ThirdActivity的断Stop方法,因为ThirdActivity这个Activity并没有完全从界面上消失,所以不会调用Stop方法,这里需要注意。
03-10 07:09:38.402: INFO/System.out(237): DialogActivity---->onStart
03-10 07:09:38.402: INFO/System.out(237): DialogActivity---->onResume
03-10 07:09:42.872: INFO/System.out(237): DialogActivity---->onPause
03-10 07:09:43.211: INFO/System.out(237): ThirdActivity---->onStop
03-10 07:09:43.262: INFO/System.out(237): FirstActivity---->onStart
03-10 07:09:43.272: INFO/System.out(237): FirstActivity---->onResume
03-10 07:09:43.723: INFO/System.out(237): DialogActivity---->onStop
方法名
下一个将调用的方法
是否会被内存回收
onCreate()
onStart()
N onRestart()
onStart()
N
onStart()
onResume()
or onStop()
N onResume()
onPause()
N onPause()
onResume()
or
onStop()
Y/N onStop()
onRestart()
or
onDestroy()
Y onDestroy()
nothing
Y
好了,今天就到这里,休息……休息……
- Android生命周期二——Task,DialogActivity
- Android—DialogActivity讲解
- DialogActivity
- DialogActivity
- Android 生命周期及task及代码助手
- Android 将Activity转化为DialogActivity
- Android学习-创建圆角的DialogActivity
- Android 将Activity转化为DialogActivity
- android学习日记——activity生命周期二
- Android学习第8课—Activity生命周期(二)
- Android Activity生命周期(二)
- Android—Fragment生命周期
- Android Gradle 自定义Task详解二:进阶
- Android Api demo系列(4) (App>Activity>DialogActivity)
- Android--Service生命周期(二)
- Android生命周期实验(二)
- Android之Activity(二)生命周期
- mars老师的第七、八讲——生命周期、Task、短信代码
- 桌面安全评估
- __declspec
- PHP 执行system(mv。。。。) 执行失败?
- select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 一步一步地实现菜单栏(JMenuBar)工具栏(JPopupMenu)组合框(JComboBox)复选框(JCheckBox)单选按钮(JRadioButton)文本域的综合应用(三)
- Android生命周期二——Task,DialogActivity
- 一个最简单的java程序,没有任何import 为什么还能System.out.println
- MP3文件格式解析
- asp.net 中textbox为文本值改变时自动触发change事件
- 解决先安装SQL Server2005后不能安装SQL Server2000的问题
- C++ 多态性(3) 运算符重载2
- 域重命名
- Ext的图标
- 为什么就没有免费的书籍呢