Android基础系列之Activity(一)


今天开始讲Android的四大组件Activity、Service、Content Provider和Broadcast Receiver。下面从Activity开始讲起。


Android中一个activity就表示一个界面,往往一个APP都是由多个activity组成的。Android四大组件都要在配置文件中配置,否则运行程序时会包错。配置方法:

在AndroidManifest.xml配置文件中找到<application></application>节点,然后在里面添加<activity></activity>节点,如下:

<activity
            android:name="com.example.activitytest1.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>

该节点有一些比较重要的属性:

name:这个是必须要的,指定该activity所在的包名和类名,写法如例子所示,可能有时会看到有人这样写:android:name=".MainActivity"这个表示当前包名

下的MainActivity类

label:指定activity的名字

icon:指定activity的图标

theme:指定activity的主题

screenOrientation:指定activity显示的方式,landscape(横屏)portrait(竖屏)unspecified(未指定,系统默认值)nosensor(忽略物理感应器)behind(继承activity栈当前activity下面的那个activity的值)

在Java代码中可使用setRequestedOrientation()方法改变该属性的值

launchMode:加载模式,该属性有四个取值,分别为standard、singleTop、singleTask、singleInstance。

先说一下Android对activity的管理方式:当我们启动一个Android应用时,系统会创建一个Task,可将它理解为一个栈,然后将启动的activity压入栈中。

standard:标准模式,系统默认值,表示每次启动该activity时都会新建一个实例,然后将其压入先前的栈中。

singleTop:这种模式基本与standart模式一样,但有一点不同,就是如果要启动的activity已经在栈定存在一个实例了,那它不会再新建一个实例,而是直接使用栈顶那个实例。

singleTask:这种模式保证在一个Task里只有一个activity实例,当启动该activity时,如果Task里不存在该对象实例,那么新建一个实例然后压入Task,如果已经存在了,那么再判断如果在栈顶,那么直接使用栈顶那个实例,如果不是在栈顶,那么先把栈里面的这个activity实例删掉,然后新建一个实例压入栈中。

singleInstance:启动activity时,如果已经存在,则将其所在的Task转到前台,如果不存在,则创建一个新的Task,然后创建一个该activity实例,然后雅图刚刚创建的Task中。

exported:设置为true时允许其他应用程序启动该activity

enabled:是否可以被实例化


Activity的生命周期图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值