Android四大组件简述之Activity
来源:互联网 发布:淘宝店铺新店扶持流量 编辑:程序博客网 时间:2024/05/29 08:12
Activity生命周期
Activity生命周期图解
这是一张广为流传的Activity生命周期图。
Activity的状态
在 android 中,Activity 拥有四种基本状态:
Active/Runing一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。
Killed Activity 被系统杀死回收或者没有被启动时处于 Killed状态。
Activity生命周期及状态转换
在创建一个Activity并启动,生命从**onCreate()-->onStart()-->onResume()**,状态处于Active/Runing。
一个Activity的onCreate()方法在整个生命周期只会被调用一次,除非在这个Activity因为自身或其他原因被销毁掉。
1、Android手机有HOME键和返回键。在按下HOME键之后,当前应用会退回到桌面。此时生命周期执行过程是**onPause()-->onStop();** Activity处于Stoped状态。
2、若返回键功能没有被重写,在按下返回键之后,当前Activity会退出,执行生命周期**onPause()-->onStop()-->onDestroy()**;Activity处于Killed状态,当前Activity已经被销毁。
3、若从Activity1跳转到Activity2,那么只会执行onPause()-->onStop();前一个Activity被存在栈中,处于Stoped状态。
4、什么时候会处于Paused状态呢,Activity在完全看不到的状态下,会处于Stoped状态,如1、3。
但是Activity在某个Activity下,但是没有被完全挡住时,只会执行onPause(),处于Paused状态,这种情况发生在情况3中Activity是以Dialog形式跳转的时候。
5、Activity恢复过程,onPause()是直接恢复到onResume(),onStop()状态是恢复到onStart(),然后执行onResume()。Activity处于running状态。
代码说明
1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
package com.example.activitylifetest;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.View;public class AndroidLifeTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_android_life_test); sLog("Activity第一次被创建onCreate()"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); sLog("onStart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); sLog("onResume"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); sLog("onPause"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); sLog("onStop"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); sLog("onDestroy"); } public void onClick(View v) { sLog("跳转到Activity2"); Intent intent = new Intent(); intent.setClass(this, Activity2.class); startActivity(intent); } private void sLog(String str) { Log.e("Activity1", str); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch(keyCode) { case KeyEvent.KEYCODE_BACK: sLog("按下返回键");break; case KeyEvent.KEYCODE_HOME: sLog("按下Home键");break; } return super.onKeyDown(keyCode, event); }}
Activity2在Mainifest.xml里面这样声明
1
<activity android:name=".Activity2" android:theme="@android:style/Theme.Dialog"></activity>
第一次启动Activity
按下HOME键再进入,按下返回键再进入。
跳转到Activity2并返回
- Android四大组件简述之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之Activity
- android四大组件之 Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android四大组件之Activity
- Android 四大组件之Activity
- android 四大组件之activity
- Android 四大组件之 Activity
- 15、C++类的友元
- 16、C++中常对象以及常成员
- Linux: the big picture
- Linux中rpm、src.rpm、源码包软件的安装
- Android开发_绚丽的自定义Gallery
- Android四大组件简述之Activity
- 17、C++运算符的重载
- yum命令的使用方法
- [学习笔记] PB数据窗口绝对技巧
- 【转载】今天的过了很久的即时通讯
- 18、C++运算符重载之++ -- [ ]
- 编译hive时遇到 failed to create task or type osfamily问题
- 实现鼠标拖动图像
- 享元模式java + javascript