Android基础之Activity
一、什么是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处于激活状态,可以和用户进行交互。
最新文章
- 罗马数字转整数Leetcode13
- IIS报错 试图加载格式不正确 的程序集解决办法
- Web services 安全 - HTTP Basic Authentication
- iOS Json转换模型库:YYModel
- Delphi ServerSocket,ClientSocket示例
- JavaScript中获取当前项目的绝对路径
- asp.net 上传文件
- ul中li居中显示的table方法
- jquery实现本地图片上传预览和限流处理
- MySQL 5.7以上 root用户默认密码问题【转】
- CF418D Big Problems for Organizers 树的直径、ST表
- Angular简介与程序架构
- 微信web开发的上传图片js接口
- How to suppress &#39;Maybe this is program method&#39; warnings from ProGuard
- 统计进程打开了多少文件,定位too many open files
- [转]React 教程
- for、for..in、forEach、$.each等循环性能测试
- hdu1238 Substrings (暴力)
- centos配置nfs服务详细步骤(centos开启nfs服务)
- NETCore 同步AD域组织和用户
热门文章
- openstack系列阅读目录
- 【C++深入浅出】智能指针之auto_ptr学习
- 剑指OFFER之二叉树中和为某一值的路径(九度OJ1368)
- 关于 JavaScript 数据类型判断
- Android真机抓屏- Android Screen Monitor
- 【转】phpmyadmin万能密码漏洞
- file_put_contents() failed to open stream: Permission denied 问题解决
- OSI七层模型具体解释
- 在iOS中怎样创建可展开的Table View?(下)
- android学习日记25--ANR和Hander消息机制