Android之Activity小结

Acitivity:
四种状态:活动状态、暂停状态、停止状态、销毁状态
四种加载模式:standard ,singleTop,singleTask,singleInstance;
七大方法:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy();

    onCreate():当创建Activity时回调,该方法只调用一次。

    onResume():恢复Activity时调用,在调用onStart()之后一定要调用该方法

    onDestroy():销毁Activity时回调,该方法也只能调用一次。
Android 中的Activity是以Activity栈的形式来管理Activity的,当前Activity为于栈顶。
详解:
四种状态:
活动状态:当前Activity,用户可见,可以获得焦点。
暂停状态:用户可见,不能获得焦点。
停止状态:用户不可见。
销毁状态:activity结束。

四种加载模式;
standard:标准模式 ,默认情况是该模式。
singleTop:Task栈顶单例模式
singleTask:Task栈内单例模式
singleInstance:全局单例模式
Android对Activity的管理:
Android采用Task的形式来管理Activity,当用户打开一个Android应用时,Ankdroid会为之创建一个Task,
然后启动这个应用的入口Activity,(注意:一个应用程序是由若干个Activity的组合)入口Activity是
<intent-filter..../>中配置的MAIN和LANCHER的ACtivity。
应用程序的Task可以理解成为一个Activity栈(先入后出),先启动的Activity为与栈底,后启动的位于栈顶。
=====================================//代码如下:===================

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.LZT.sqlitetry"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

=======================================================================
1.默认模式:standard
当Activity为这么加载模式的时候,每次启动该Activity时会在原Task栈中创建一个新的Activity实例。
2.singleTop:
该模式与standard模式基本相似,但是有一点不同,如果要启动的Activity位于栈顶的时候,那就不必再创建出
一个Activity实例了。//可以理解字面意思
3.singleTask:
采用这种模式的Activity时,在同一个task中只会有一个该Activity的实例,具体分为下面三种情况:
*若启动的目标Activity不存在时,则会创建出一个Activity,并加入栈顶。
**若目标Activity已经存在,且位于栈顶,那么与singleTop行为相同
***若目标Activity已经存在但没有位于栈顶,那么系统会将该位于该Activity上的所有Activity移除Task,
使得实例推至栈顶。
4.singleInstance:
在整个应用程序中只能有一个Activity实例并且单独的位于一个栈中。

以上四种加载模式都需要在文件清单中进行配置:属于Activity的一个属性: LaucnchMode="singleTop"||"singleTask"
||"singleInstance"
Activity的另外一个属性:exported="ture"||"false",为true时表明该Activity可以被其他应用程序启动。

==============================================================

名为A的Activity的启动过程:
onCreate()--->onStart()---->onResume();
当前名为A的Activity,然后调用BActivity:
A.onPause()-->B.onCreate()---->B.onStart()---->B.onResume()---->A.onStop();
然后回调A的过程:
B.onPause()--->A.onRestart()--->A.onStart()--->A.onResume()--->B.onStop()--->B.onDestroy();
可以理解为正在玩游戏,然后有人打电话来了。

一个Activity销毁时可能的三种状况:
a:onPause()--->onStop()---onDestroy();
b:onPause()--->progressKill
c:onPause()--->onStop()--->progressKill
CPU可以根据情况直接kill掉一些Activity来节省内存。

时间: 2024-12-23 19:48:57

Android之Activity小结的相关文章

Android Camera 使用小结。两种方法:一是调用系统camera app,二是自己写camera程序。

源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Came

Android Camera 使用小结

转载地址:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android Camera 使用小结 Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,

Android之Activity生命周期浅析(一)

??Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Activity的生命周期,以便我们在以后的开发中能如鱼得水. 一.初识Activity ??在日常应用中Activity是与用户交互的接口,它提供了一个用户完成相关操作的窗口.当我们在开发中创建Activity后,通过调用setContentView(View)方法来给该Activity指定一个布局

使用javah生成.h文件, 出现无法访问android.app,Activity的错误的解决

在工程ndk22/bin/classes中 运行javah  com.cn.ndk22.Ndk22.Activity ,出现了.h文件 我在bin/classes目录中 ,就是无法访问, : 错误:无法访问android.app.Activity 找不到android.app.Activity 如下图所示 于是我cmd定位到ndk/src,中运行 javah com.heima.ndk.ndkActivity, 成功了就能成功了 ...我也不知道为什么.,如下图 总结:  使用javah生成.h

android 19 activity纵横屏切换的数据保存与恢复

Bundle类:竖屏的activity换到横屏的activity的时候,会把竖屏的activity杀掉横屏的activity创建,竖屏的activity会有一些计算结果,可以用数据存起来,存到内存里面,然后存在横屏的activity. Intent类putExtra("user", user);传数据的时候用的就是Bundle对象, private Bundle mExtras; Bundle是一个map, package com.sxt.day04_03; import java.i

Android之Activity之间传递对象

在很多时候,我们需要在Activity之间传递对象,比如当你点击了某列表的item,需要传递给下一个Activity该对象,那我们需要该怎么做呢? Android支持两种传递对象的方式,一种是bundle.putSerializable方式,一种是bundle.putParcelable. 那么下面我们就用一个例子来实践Activity传递对象: 1.首先建立两个类,一个Teacher类表示老师,一个Student类表示学生.内容分别如下: <span style="font-size:1

Android的Activity的launchMode与onActivityResult方法的关系

Android的Activity有四种启动模式,分别是standard.singleTop.singleTask.singleInstance. 测试发现,不同的模式下onActivityResult的调用时机不同: 1 在standard.singleTop两个模式下,onActivityResult方法会在当前的Activity结束掉之后被调用 2 在singleTask.singleInstance两个模式下,onActivityResult方法会立即调用,等到再setResult的时候,

Android 修改Activity标题样式 actionBar

修改Activity的标题样式及ActionBar ,代码如下 <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <!-- <item name=

android之activity间传输数据

MainActivity如下: package com.example.helloworld; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainA