一.Activity的状态
Activity在任何时间下都处于以下四种状态之一:
1. 活动: Activity由用户启动,正在运行,并且在前台;
2. 暂停: Activity正在运行并且可见,但是被一个通知或者某个Activist覆盖了,用户可以看到,但不能与之交互;
3. 停止:Activity正在运行,但被已启动的另一个Activity所隐藏,应用程序无法直接向用户呈现任何有意义的内容,但可以通过通知的形式与用户通信;
4. 死亡: Activity从未启动或者被终止了。
二.Activity的生命周期
1. onCreate()和onDestroy():当Activity首次启动的时,将用一个空参数(null)来调用onCreate(),当Activity关闭时将调用onDestroy();
2. onStart()、onRestart()和onStop():Activity在用户可见时调用onStart(),重启Activity时将调用onRestart(),停止Activity时调用onStop()。
3. onPause()和onResume():Activity被暂停时调用onPause(),Activity和用户交互时调用onResume()。
示例:
第一个Activity的Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/txtActivity"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
package com.ap;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class acttivityPeriodAndroid extends Activity {
private final static String TAG = "开始测试Active的生命周期!";
private TextView txt;
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(TAG, "onCreate");
setContentView(R.layout.main);
txt = (TextView)findViewById(R.id.txtActivity);
btn = (Button)findViewById(R.id.second);
txt.setText(R.string.txtAct);
btn.setText(R.string.btnSubmit);
btn.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
Intent ten = new Intent();
ten.setClass(acttivityPeriodAndroid.this, SencondActivity.class);
startActivity(ten);
finish();
}
}
@Override
protected void onStart() {
super.onStart();
Log.v(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.v(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v(TAG, "onDestroy");
}
}
第二个Activity的Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/txtSecond"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/exit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
package com.ap;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class SencondActivity extends Activity {
private TextView txtSen;
private Button btnExit;
private final static String TAG = "第二个Activity生命周期开始测试";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(TAG, "onCreate");
setContentView(R.layout.second);
txtSen = (TextView)findViewById(R.id.txtSecond);
btnExit = (Button)findViewById(R.id.exit);
txtSen.setText(R.string.txtSen);
btnExit.setText(R.string.btnQuit);
btnExit.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
finish();
}
}
@Override
protected void onStart() {
super.onStart();
Log.v(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.v(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.v(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v(TAG, "onDestroy");
}
}
运行后的日志:
在启动一个新的Activity阶段:会依次执行3个生命周期OnCreate(),OnStart()和OnResume()
在Activity失去焦点阶段:如果新的Activity完全遮挡住了原有的Activity,会调用OnPause()和OnStop();如果新的Activity只是部分遮挡,如对话框形式的Activity,只会调用OnPause()
在Activity重新获得焦点阶段:如果原Activity是被完全遮挡住的,将会调用OnRestart()、OnStart和OnResume().如果原Activity不是被完全遮挡住的,系统将只调用OnResume().
在关闭Activity阶段:会依次执行Onpause()、OnStop()、OnDestroy()
Task运行机制
Task是一个存放很多activity的栈,所有的activity对象在Task栈中被组织成同一个单元。
(1)当应用程序启动后,将默认的第一个activity对象压入task栈中.
(2)当点击按钮后启动第二个activity,该Activity对象被压入栈中;手机显示Task栈中顶部的元素,之前的Activity对象还存放在Task栈中,没有被销毁。
(3)当按下back按钮后,处于Task栈顶部的Activity对象被弹出。
但如果在通过StartActivity(intent)启动新的activity后,再调用finish(),之前的Activity对象就会在Task栈中被销毁。
注意:Task栈中不允许重新排序。
- 描述: 运行日志
- 大小: 122.7 KB
- 大小: 55.5 KB
分享到:
相关推荐
code 博文链接:https://limdengrock.iteye.com/blog/1018141
Android开发实例:手机助手 源码
Android应用开发入门教程(经典版)&android;快速入门 Android应用开发入门教程(经典版)&android;快速入门
嵌入式系统开发之道:菜鸟成长日志与项目经理的私房菜 Part2 免费!
Android开发入门之路(初学者必读).zip
电子-嵌入式系统开发之道菜鸟成长日志与项目经理的私房菜.part2.rar,综合电子技术数字,模拟,高频电路
菜鸟系列之一:在UBUNTU LINUX 下搭建ANDROID开发平台。 本文档系统的整理了在ubuntu系统下如何搭建android开发平台,对android感兴趣的同学可以借鉴学习下。
嵌入式系统开发之道菜鸟成长日志与项目经理的私房菜pdf文件,非扫描版哦, 对开发者还是有些帮助的。
菜鸟级傻瓜版教程:安装另类ipa格式软件的两个主要方法(ipad版)借鉴.pdf
嵌入式系统开发之道 菜鸟成长日志与项目经理的私房菜,部分章节
Android开发环境配置,菜鸟级入门资料
# 菜鸟商城 # 是一个仿淘宝客户端的实战课程,功能包括:1.支付(支付宝,微信,百度钱包) 、首页 、热卖 、商品大全 、购物车 、我的 、商品列表 、商品详情 、注册/登录 、收货地址 、我的订单 、我的收藏 ..... ...
基于VS2012的菜鸟WDF驱动开发系列
android开发的入门教程
android商城源码,功能齐全,注释明确,是学习,二次开发的最佳选择,带数据
为此,“职场大菠菜”携手"指尖疯教育"重磅推出《安卓开发实战免费微课》系列!91集微课,足以让您从咿呀学语的菜鸟成功晋级内功深厚的高手。 微课也要有力量,免费也要有匠心!从PPT课件的高颜值梳妆,到产品制作...
嵌入式开发入门教材,需要的可以下载看看 这是第二部分,请与第一部分一起下载解压
菜鸟级傻瓜版教程:安装另类ipa格式软件的两个主要方法(ipad版)终版.pdf
从菜鸟到高手 Android系列问答汇总
菜鸟裹裹主要包括 1.支付宝快速登录 2.支付宝注册 3.手机淘宝登录,手机登录 4.首页-校园认证 5.首页-包裹搜索,首页-添加包裹 6.首页-扫一扫 7.首页-身份码 8.首页-寄万物,寄件 9.首页-更多 10.首页-收件,首页-...