Android基础之Activity

一、什么是Activity

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

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

二、如何去创建Activity

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

1 public class MainActivity extends Activity {
2
3     @Override
4     protected void onCreate(Bundle savedInstanceState) {
5         super.onCreate(savedInstanceState);
6         setContentView(R.layout.activity_main);//加载布局
7     }
8 }

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

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.newactivity"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6
 7     <uses-sdk
 8         android:minSdkVersion="8"
 9         android:targetSdkVersion="17" />
10
11     <application
12         android:allowBackup="true"
13         android:icon="@drawable/ic_launcher"
14         android:label="@string/app_name"
15         android:theme="@style/AppTheme" >
16         <activity
17             android:name="com.example.newactivity.MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25     </application>
26
27 </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程序演示

  

 1 public class App02Activity extends Activity {
 2
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_app02);
 7         ((Button) findViewById(R.id.access_bt)).setOnClickListener(new OnClickListener() {
 8             @Override
 9             public void onClick(View v) {
10                 Intent intent = new Intent("com.shxt.activity.singleinstance");
11                 startActivity(intent);
12             }
13         });
14     }
15 }
 1       <!-- 该Activity中的AndroidManifest.xml -->
 2         <activity
 3             android:name=".SingleInstanceActivity"
 4             android:launchMode="singleInstance" >
 5              <intent-filter>
 6                 <action android:name="com.shxt.activity.singleinstance" />
 7
 8                 <category android:name="android.intent.category.DEFAULT" />
 9             </intent-filter>
10         </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处于激活状态,可以和用户进行交互。

时间: 2024-10-26 09:58:32

Android基础之Activity的相关文章

Android基础_3 Activity相对布局

相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的.相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一个控件的位置了. 本次实验就是显示如下的activity: 其中只有2个button,1个textview,1个edittext. 在相对布局中,一般用到的控件属性解释如下: 在相对布局中有如下属性,解释如下: android:layout_above  为将该控件的底部放在指定id控件的上方 an

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

在activity的布局中,线性布局和表格布局是最简单的,这次分别从线性布局,表格布局以及线性布局和表格混合布局做了实验,实验中只需要编写 相应的xml的代码,java代码不需要更改,因为我们这里只是练习android的界面设计.参考的资料为mars老师的教程. 线性布局: 线性布局就是将各种控件按照行或者列依次进行排列. 其中本实验用到的各控件的属性解释如下: android:layout_weight属性是指不同的控件在activity中占有体积大小的比例. android:paddingL

【Android基础】Activity启动模式以及Intent Flags 与 栈 的全面解析

Android开发的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制. Intent主要用于2种情景下:发起意图 .广播 其底层实现原理不在此篇文章的讨论范围,以后会陆续更新上的. 下面我就根据近期学习,总结记录下Activity启动模式 及 Intent Flags 与 栈 的关联分析. 1.首先我们先搞清楚什么是栈: 栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元

【Android基础】Activity的启动模式(android:launchMode)

在android里,有4种activity的启动模式,分别为: "standard" (默认) "singleTop" "singleTask" "singleInstance" 它们主要有如下不同: 1. 如何决定所属task "standard"和"singleTop"的activity的目标task,和收到的Intent的发送者在同一个task内,除非intent包括参数FLAG_

Android基础之Activity四种启动模式

这东西是最基础的,发现自己其实没有真正试过,好好研究研究 standard :默认, singleTop :大体上同standard,但是当该Activity实例已经在task栈顶,不再创建新的实例,而是调用该实例的onNewIntent方法 singleTask :跟singleTop不同,不管Activity的实例是否在栈顶,都不再创建新的实例,而是调起栈里实例调用onNewIntent,并且clearTop singleInstance:这个比较特殊,相当于Activity独占一个栈, 假

&lt;Android基础&gt;(二) Activity Part 1

1.活动的基本用法: 1) 手动创建活动.创建加载布局 2) 在AndroidManifest文件中注册 3) 在活动中添加Button.Toast.Menu 4) 销毁活动 2.Intent 1) 显式intent 2) 隐式intent 3) 关于Intent的其他应用 4) 活动间数据传递 ? 2.1 活动 活动是一种包含用户界面的组件,主要用于和用户进行交互,一个应用程序中可以包括零个或多个活动. 2.2 活动的基本用法 手动创建活动ActivityTest 新建项目->Add No E

Android基础——调用Activity并获得返回值

图像选择:Main中点击选择图像按钮,启动Head活动用来选择图像, 然后将被选择图像通过bundle发送给Main,同时附带返回值,方便Main来判断 Head布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="

Android基础-06

Android基础-06 Activity页面跳转和数据传递 01_AndroidManifest文件中的几个细节 在Android应用程序中一个activity就对应了一个界面. 结论: 1.一个应用程序可以有多个桌面图标: 2.创建快捷图标的方法: <intent-filter> //main 应用程序的入口 <action android:name="android.intent.action.MAIN" /> //LAUNCHER 启动器 <cat

Android基础入门教程——4.1.2 Activity初窥门径

Android基础入门教程--4.1.2 Activity初窥门径 标签(空格分隔): Android基础入门教程 本节引言: 上一节中我们对Activity一些基本的概念进行了了解,什么是Activity,Activity的生命周期,如何去启动一个Activity等,本节我们继续来学习Activity,前面也讲了一个App一般都是又多个Activity构成的,这就涉及到了多个Activity间数据传递的问题了,那么本节继续学习Activity的使用!另外关于传递集合,对象,数组,Bitmap的