一、什么是Activity

  Activity是Android四大组件之一,并且Activity是组件中的重中之重。

  Activity是为用户提供一个用于信息交互的窗口。

二、如何去创建Activity

  1.新建一个继承Activity的子类

 public class MainActivity extends Activity {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//加载布局
}
}

  2.需要在功能清单AndroidManifest.xml文件中配置新建的Activity类

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.newactivity"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.newactivity.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>

三、任务栈

  任务栈的由来:

    Android应用程序有一个或多个Activity组件或其它组件组成,为了记录用户都开启哪些Activity,以及开启这些Activity的先后顺序。

  任务栈的特点:

    1、当一个Android应用程序开启后Android操作系统就会为它分配一个任务栈,当所有的activity都退出的时候,任务栈就被清空了;

    2、任务栈的id是一个自增长的int数据类型,可以通过getTaskId()方法获取任务栈的id;

    3、Android操作系统里存在多个任务栈,一个Android应用程序可以有一个或多个任务栈;

    4、默认情况下,关闭掉一个应用程序就清空了Android操作系统为该应用程序分配的任务栈,但应用程序的进程还会保留;

四、Activity的启动模式

  Activity的启动模式总共有四种模式,分别是standard(默认)、singleTop、singleTask、singleInstance

  1.standard模式

  在这种启动的模式下,每次激活Activity时(startActivity)都创建一个新的Activity实例并放入任务栈的栈顶

  2.singleTop

  在这种启动的模式下,如果singleTop在任务栈的栈顶时,不需要在创建新的Activity,调用onNewIntent()方法(第一次启用singleTop不会调用onNewIntent()方法),

  否则要重新创建Activity实例,但不会调用onNewIntent();

  3.singleTask(常用)

  在这种启动模式下,如果singleTask在任务栈的栈顶时,不需要创建新的Activity,调用onNewIntent()方法;

  如果singleTask不在任务栈的栈顶,并且在任务栈中有singleTask时,也不需要重新创建新的Activity,而是调用onNewIntent()方法,并且在singleTask之上其它的Activity实例都将删除

  4.singleInstance

  在这种启动模式下,如果该Activity所在的Android程序激活过或被激活过它,会存在于单独的任务栈中

  如果其它的Android程序启动的时候,会重新激活该Activity,并且会调用该Activity中的onNewIntent()方法;

  另外一个app打开该Activity程序演示

  

 public class App02Activity extends Activity {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app02);
((Button) findViewById(R.id.access_bt)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.shxt.activity.singleinstance");
startActivity(intent);
}
});
}
}
       <!-- 该Activity中的AndroidManifest.xml -->
<activity
android:name=".SingleInstanceActivity"
android:launchMode="singleInstance" >
<intent-filter>
<action android:name="com.shxt.activity.singleinstance" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

五、Activity生命周期

一个Activity的完整生命周期:

void onCreate()

void onStart()

void onResume()

void onPause()

void onStop()

void onDestroy()

1.一个完整的生命周期,是由第一次调用onCreate()开始,直至调用onDestory()方法结束。

 Activity在onCreate()完成初始化,在onDestroy()中释放所有的系统资源。

2.可视生命周期:该生命周期是由onStart()调用开始直到调用onStop()方法结束。在这之间,方法可以随着应用程序是否为用户可见而被多次调用

3.前台生命周期:是由onReusme()调用到onPause()方法为止。在此之间Activity处于激活状态,可以和用户进行交互。

Android基础之Activity的更多相关文章

  1. android 基础02 - Activity 的生命周期及状态

    返回栈 Android 中的 Activity 是可以层叠的,当我们启动一个新的 Activity 时,就会覆盖在原有的 Activity 之上, 点击 Back 会销毁当前 Activity,下面的 ...

  2. Android基础之Activity launchMode详解

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Activity的lauchmode,是基础的属性,但也是App优化必须掌握的知识,它约束了Acti ...

  3. Android基础之Activity四种启动模式

    这东西是最基础的,发现自己其实没有真正试过,好好研究研究 standard :默认, singleTop :大体上同standard,但是当该Activity实例已经在task栈顶,不再创建新的实例, ...

  4. Android基础_3 Activity相对布局

    相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的.相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一 ...

  5. Android基础_2 Activity线性布局和表格布局

    在activity的布局中,线性布局和表格布局是最简单的,这次分别从线性布局,表格布局以及线性布局和表格混合布局做了实验,实验中只需要编写 相应的xml的代码,java代码不需要更改,因为我们这里只是 ...

  6. 【Android基础】Activity之间进行参数传递的三种方式

    1.使用Intent进行传输 //发送数据的Activity class button implements OnClickListener{ @Override public void onClic ...

  7. <Android基础>(二) Activity Part 2

    1.活动生命周期 1)返回栈 2)活动状态 3)活动的生存期 2.活动的启动模式 1)standard 2)singleTop 3)singleTask 4)singleInstance 3.活动的优 ...

  8. <Android基础>(二) Activity Part 1

    1.活动的基本用法: 1) 手动创建活动.创建加载布局 2) 在AndroidManifest文件中注册 3) 在活动中添加Button.Toast.Menu 4) 销毁活动 2.Intent 1) ...

  9. 基础4 Android基础

    基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...

随机推荐

  1. MongoDB介绍及下载与安装

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...

  2. Oracle- 提示查询结果不可更新,请使用...更新结果。

    我们在对Oracle数据库进行操作时,有时会在查询完结果后想要对其中的某些数据进行操作,当我们点击编辑(一个锁标志)是,会提示我们上述问题中的错误:这些查询结果不可更新,请使用ROWI或者SELECT ...

  3. webService 接口调用配置

    1.配置XML文件,如果新建一个XML文件需要在applicationContext.xm里面配置一下 <import resource="cxf-client.xml" / ...

  4. 淘宝IP地址查询

    官方网址:http://ip.taobao.com/index.php 相关文章: http://www.cnblogs.com/zetee/p/3482085.html http://www.cnb ...

  5. 彻底解决android读取中文txt的乱码(自动判断文档类型并转码

    原文:http://blog.csdn.net/handsomedylan/article/details/6138400 public String convertCodeAndGetText(St ...

  6. 06---Java基础、面向对象

    一.Java基础 1.Java概述 Java语言特点:                     简单性.解释性.面向对象.高性能.分布式处理                     多线程.健壮性.动 ...

  7. WSGI、flup、fastcgi、web.py的关系

    Apache/lighttpd: 相当于一个request proxy,根据配置,把不同的请求转发给不同的server处理,例如静态的文件请求自己处理,这个时候它就像一个web server,对于fa ...

  8. [001]socket通信--server和client实现迭代的简单例子

    server端: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unist ...

  9. JavaScript笔记 第十六章 匿名函数和闭包

    1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function getName() { return 'name'; } a ...

  10. javascript调试 console

    Console命令详解,让调试js代码变得更简单   Firebug是网页开发的利器,能够极大地提升工作效率. 但是,它不太容易上手.我曾经翻译过一篇<Firebug入门指南>,介绍了一些 ...