1.Activity在系统被Activity堆栈管理着,每当一个新的Activity启动,它将放在堆栈的顶端成为运行着的Activity,先前的那个Activity在堆栈中一直保持在它的下面,不能放到前景,直到新的Activity退出。
2.四个重要的状态:①在前景时Activity是运行着的。②当Activity失去焦点,但没有全部被覆盖时,它被暂停(paused)了。它还是活着的,维持这所有的状态和成员信息,并且还依附着window manager,但是它可能在系统低内存时被杀死。③Activity被完全覆盖,它结束(stopped)了,但是维持这所有的状态和成员信息,可能在系统低内存时被杀死。④当它从暂停或者结束重新显示在前景时,它必须要重新启动,重载先前的状态。
3.关于Activity生命周期系统留出的钩子(API中原文:All of these are hooks that you can override to do appropriate work when the activity changes state.):
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
4.当Activity要被杀死时,我们要使用onPause()来记录重要数据到存储体中,除此之外,onSaveInstanceState(Bundle) 方法会在Activity转移到后台状态之前被调用,这样就可以在那之前保存下数据到给定的Bundle中,在下一次oncreate(Bundle)放在可以接收到该Bundle。当时onPause()比onSaveInstanceState()更重要,因为后者并不是Activity生命周期中的一环,不是每一次都会调用。还有一个方法onRestoreInstanceState()。
5.当Activity的配置(configuration)变化时,Activity直接跳过生命周期,调用onDestroy()销毁Activity,然后重新创建一个Activity,调用onCreate(Bundle),其中Bundle是来自于onSaveInstanceState(Bundle).也可以自己在Manifest.xml中使用android:configChanges属性,通知当某些configuration变化时,自己会在onConfigurationChanged(Configuration) 中处理,而不需要系统重新启动这个Activity。如果是注册之外原因引起的变化,还是会重启这个Activity,而不调用onConfigurationChanged(Configuration)
6.startActivity(Intent)方法可以启动一个新的Activity。当我们需要Activity结束时给我们返回结果,那么可以调用startActivityForResult(Intent, int),其中的int指明了Activity的编号(用来区别Activity的),我们可以在回调方法onActivityResult(int, int, Intent)中处理Activity结束后的事务。当Activity结束是调用setResult(int)来返回结果给它的父Activity。
7.启动一些特别的Activity是需要一定权限的,在Manifest.xml文件中使用
<uses-permission>来声明,比如:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
8.进程的生命周期,系统尽可能长的运行他们,但是当内存低的时候,系统会杀死一定的进程。进程的优先级是按照Activity的生命周期来排的。最重要的是在前景的Activity所在进程,接下来是可视的Activity所在的进程,接着是后台Activity所在的进程,最后的空进程。Service和BroadcaReceiver所在的进程也比不可视的Activity所在的进程优先级高。
9.当Activity按了back键后它会中堆栈弹出并销毁,前一个Activity 恢复(resume)
10.Activity在Manifest.xml中的属性和值:
(更多请参考:android-sdk\docs\guide\topics\manifest\activity-element.html)
android:configChanges=["mcc", "mnc", "locale", "touchscreen", "keyboard","keyboardHidden", "navigation", "screenLayout", "fontScale", "uiMode","orientation", "screenSize", "smallestScreenSize"]
android:hardwareAccelerated=["true" | "false"]
android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape"|"sensorPortrait" | "sensor" | "fullSensor" | "nosensor"]
android:theme="resource or theme"
android:windowSoftInputMode=["stateUnspecified",stateUnchanged", "stateHidden","stateAlwaysHidden", "stateVisible","stateAlwaysVisible","adjustUnspecified","adjustResize", "adjustPan"] >
等等...
分享到:
相关推荐
NULL 博文链接:https://zhenzxie.iteye.com/blog/1469981
Android四大组件——Activity——Activity的生命周期.doc
android入门级视频:Android基本组件介绍之Android应用的灵魂——Intent和Activity介绍与实例
安卓Android源码——activity切换特效.zip
(框架)Android例子源码——tabhost+activity+slidingMenu仿新浪微博布局.zip
该工程为网上找到的不错的资源,我仅是自己跟着做了一次,以后找...执行为主Activity中点击按钮扫描,跳转到扫描界面,扫描结束后finish自动调用主Activity中的onActivityResult()方法。在该方法中可做自己想做的事。
安卓Android源码——模拟Activity进出栈.zip
安卓Android源码——模拟Activity进出栈.rar
Android开发者指南(4) —— Application Fundamentals - 农民伯伯 - 博客园.mht863.70 KB Android开发者指南(5) —— monkeyrunner - 农民伯伯 - 博客园.mht608.57 KB Android开发者指南(6) —— AIDL - 农民伯伯 - ...
Android学习笔记(四)Android 中Activity页面的跳转及传值 Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)...
动手学Android之二——初识Activity示例代码,很简单,android入门的第一个实例,欢迎大家下载!
免费资源可以看博客中《Activity之间的数据回传》进行学习 Android开发 猴子摘桃小项目——学习Activity之间的数据回传
安卓Android源码——(Activity生命周期).zip
Activity之间通信及其生命周期变化,及回传参数等基础知识点
安卓Android源码——(Activity跳转与操作).zip
动手学Android之七——Activity生命周期例子程序,欢迎大家下载