android apk --- Active的生命周期
来源:互联网 发布:免费的程序化交易软件 编辑:程序博客网 时间:2024/05/17 04:16
转载自:http://limdengrock.iteye.com/blog/1023926
一.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" ><TextViewandroid:id="@+id/txtActivity"android:layout_width="fill_parent"android:layout_height="wrap_content"/><Buttonandroid: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 {@Overridepublic void onClick(View v) {Intent ten = new Intent();ten.setClass(acttivityPeriodAndroid.this, SencondActivity.class);startActivity(ten);finish();} }@Overrideprotected void onStart() {super.onStart();Log.v(TAG, "onStart");}@Overrideprotected void onResume() {super.onResume();Log.v(TAG, "onResume");}@Overrideprotected void onPause() {super.onPause();Log.v(TAG, "onPause");}@Overrideprotected void onStop() {super.onStop();Log.v(TAG, "onStop");}@Overrideprotected 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" ><TextViewandroid:id="@+id/txtSecond"android:layout_width="fill_parent"android:layout_height="wrap_content"/><Buttonandroid: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生命周期开始测试";@Overrideprotected 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 {@Overridepublic void onClick(View v) {finish();}}@Overrideprotected void onStart() {super.onStart();Log.v(TAG, "onStart");}@Overrideprotected void onResume() {super.onResume();Log.v(TAG, "onResume");}@Overrideprotected void onPause() {super.onPause();Log.v(TAG, "onPause");}@Overrideprotected void onStop() {super.onStop();Log.v(TAG, "onStop");}@Overrideprotected 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栈中被销毁。
- android apk --- Active的生命周期
- android active 生命周期备忘
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- Unity粒子系统参数解析(二)(发射器)
- CodeForces 545DQueue (排序模拟)
- ip拨号器
- 关于指针及 * 运算符的一些使用方法
- Leetcode #213 House Robber II
- android apk --- Active的生命周期
- 【1】基于ATmega 8A -PU 的蓝牙遥控电源插座设计——【2、阻容降压原理及电路】
- 小计算机实现
- HDU 5437 模拟
- Unity Shader概念描述
- CocoaPods的一些略为高级一丁点的使用
- jz2440 ping问题
- eclipse不能进入debug模式的解决方法
- 详解大端模式和小端模式