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"] >
等等...
分享到:
相关推荐
在Android应用开发中,Activity是Android四大组件之一,它是用户界面的主要载体,负责与用户进行交互。本篇文章将深入探讨Activity的子类化及其在实际开发中的应用。通过子类化Activity,我们可以更好地组织代码,...
本篇文章将深入探讨“Android学习之路——7.Service”,分析Service的基本概念、使用方式以及常见应用场景,同时结合源码解析Service的工作原理,并提供一个实战Demo——Service_Demo。 一、Service基本概念 ...
【标题】"安卓Android源码——FloatWindowDemo....总的来说,"安卓Android源码——FloatWindowDemo.zip" 是一个实用的学习资源,可以帮助开发者掌握Android浮动窗口的实现方法,增强其在Android应用开发中的实践能力。
【标题】"安卓Android源码——WebViewDemo.zip" 提供的是一个关于Android平台下使用WebView组件的示例项目。在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部展示网页内容,实现与...
4. **启动Activity**: Intent常用于启动新的Activity,通过`startActivity(Intent)`方法,我们可以传递数据给新Activity,比如传递一个选择的图片或文本。 5. **启动Service**: 除了启动Activity,Intent还可以...
【标题】"安卓Android源码——TrendsCrossLayout.zip" 提供的是一个关于Android平台的源码项目,可能是一个自定义布局或者UI组件的实现。这个项目的核心是"TrendsCrossLayout",它可能是作者为了实现某种特定的界面...
4. **保存Activity状态**:当Activity被销毁并重新创建(例如设备旋转导致配置改变)时,可以使用onSaveInstanceState(Bundle outState)方法保存当前状态到Bundle,然后在onCreate(Bundle savedInstanceState)或...
【标题】"安卓Android源码——FBReader.zip" 指的是一个包含了开源电子书阅读器FBReader在Android平台上的源代码压缩包。FBReader是一款流行的电子书阅读应用,它支持多种格式,如EPUB、FB2、MOBI等,并且具有自定义...
"main.rar"这个文件可能是一个包含了入门学习资料的压缩包,其中的核心内容可能包括Android的基本概念、开发环境搭建、UI设计以及程序调试等方面。 一、Android系统基础 1. **架构**:Android系统由Linux内核、系统...
【标题】"安卓Android源码——GestureDemo.zip"是一个关于Android手势识别的示例项目,它可以帮助开发者理解和实现用户在Android设备上的各种手势操作。在这个项目中,开发者将学习到如何利用Android SDK中的...
"安卓Android源码——travelling.rar"这个压缩包文件很可能包含了与旅行相关的应用源代码,这为我们提供了研究和学习Android系统如何处理旅行应用功能的机会。在这个项目中,我们可以深入探讨以下几个核心知识点: ...
总之,"安卓Android源码——MiramemsGsensorTool.zip"是一个关于Android平台下G-sensor数据处理的工具,它涉及到Android源码的编译、传感器API的使用、数据处理和应用集成等多个方面,对深入学习和开发Android系统...
【标题解析】 ...通过研究这份源码,开发者可以学习到如何在Android应用中实现动态改变UI元素外观的技巧,这对于提高用户体验和应用的交互性非常重要。同时,也是对Android开发基础的一次深入实践和理解。
【标题】"安卓Android源码——LedongliDemo.zip" 提供的是一个Android应用程序的源代码,名为"LedongliDemo"。这个项目可能是由开发者Ledongli创建的一个示例应用,用于展示Android开发中的某些特定功能或技术。通过...
总的来说,`安卓Android源码——StickyGridView.zip`是一个学习和实践Android自定义视图、第三方库集成以及UI优化的好资源。通过深入研究这些源码,开发者不仅能提升自己的编程技能,还能更好地理解和利用Android...
【标题】"安卓Android源码——BlogForZFB.zip" 提供的是一个针对安卓平台的开发项目源代码,其中包含了构建和运行一个Android应用的基本结构和文件。这个项目可能是一个博客应用,专为支付宝(ZFB)用户设计,或者与...
4. **AndroidManifest.xml**:这是每个Android应用的核心配置文件,其中定义了应用的元数据,如应用名、版本信息、所需权限、启动Activity等。通过查看Freegemas的AndroidManifest.xml,我们可以了解项目的整体结构...
《安卓Android源码深度探索——osChina.zip剖析》 Android操作系统是全球最受欢迎的智能手机平台之一,它的开源特性吸引了无数开发者进行深入研究。本篇文章将基于"osChina.zip"这一压缩包,探讨Android的源码,...