须要在清单文件中为其配置一个activity标签html
标签中若是带有这个子节点,则会在系统中多建立一个快捷图标android
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
一个应用程序能够在桌面建立多个快捷图标。web
activity的名称、图标能够和应用程序的名称、图标不相同浏览器
android:icon="@drawable/ic_launcher" android:label="@string/app_name"
Activity的跳转须要建立Intent对象,经过设置intent对象的参数指定要跳转Activityapp
经过设置Activity的包名和类名实现跳转,称为显式意图ide
经过指定动做实现跳转,称为隐式意图post
跳转至同一项目下的另外一个Activity,直接指定该Activity的字节码便可学习
Intent intent = new Intent(); intent.setClass(this, SecondActivity.class); startActivity(intent);
跳转至其余应用中的Activity,须要指定该应用的包名和该Activity的类名网站
Intent intent = new Intent(); //启动系统自带的拨号器应用 intent.setClassName("com.android.dialer", "com.android.dialer.DialtactsActivity"); startActivity(intent);
隐式意图跳转至指定Activitythis
Intent intent = new Intent(); //启动系统自带的拨号器应用 intent.setAction(Intent.ACTION_DIAL); startActivity(intent);
要让一个Activity能够被隐式启动,须要在清单文件的activity节点中设置intent-filter子节点
<intent-filter > <action android:name="com.sinyee.babybus.action.second"/> <data android:scheme="asd" android:mimeType="aa/bb"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>
action 指定动做(能够自定义,能够使用系统自带的)
data 指定数据(操做什么内容)
category 类别 (默认类别,机顶盒,车载电脑)
隐式意图启动Activity,须要为intent设置以上三个属性,且值必须与该Activity在清单文件中对三个属性的定义匹配
intent-filter节点及其子节点均可以同时定义多个,隐式启动时只需与任意一个匹配便可
//获取启动此Activity的intent对象 Intent intent = getIntent(); Uri uri = intent.getData();
显式意图用于启动同一应用中的Activity
隐式意图用于启动不一样应用中的Activity
Activity经过Intent启动时,能够经过Intent对象携带数据到目标Activity
Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("maleName", "kiki"); intent.putExtra("femaleName", "miaomiao"); startActivity(intent);
在目标Activity中取出数据
Intent intent = getIntent(); String maleName = intent.getStringExtra("maleName"); String femaleName = intent.getStringExtra("femaleName");
onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory
onStart-->onResume-->onPause-->onStop
onResume-->onPause
每一个应用会有一个Activity任务栈,存放已启动的Activity
Activity的启动模式,修改任务栈的排列状况
standard 标准启动模式
singleTop 单一顶部模式
若是任务栈的栈顶存在这个要开启的activity,不会从新的建立activity,而是复用已经存在的activity。保证栈顶若是存在,不会重复建立。
应用场景:浏览器的书签
singeTask 单一任务栈,在当前任务栈里面只能有一个实例存在
当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,若是有实例存在就复用这个已经存在的activity,而且把这个activity上面的全部的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在
应用场景:浏览器的activity
若是一个activity的建立须要占用大量的系统资源(cpu,内存)通常配置这个activity为singletask的启动模式。webkit内核 c代码
singleInstance启动模式很是特殊, activity会运行在本身的任务栈里面,而且这个任务栈里面只有一个实例存在
若是你要保证一个activity在整个手机操做系统里面只有一个实例存在,使用singleInstance
应用场景: 电话拨打界面
默认状况下 ,横竖屏切换, 销毁当前的activity,从新建立一个新的activity
快捷键ctrl+F11(对android模拟器进行横竖屏切换)
在一些特殊的应用程序常见下,好比游戏,不但愿横竖屏切换activity被销毁从新建立
需求:禁用掉横竖屏切换的生命周期
横竖屏写死
android:screenOrientation="landscape" android:screenOrientation="portrait"
让系统的环境 再也不去敏感横竖屏的切换。
android:configChanges="orientation|screenSize|keyboardHidden"
步骤:
开启activity而且获取返回值
startActivityForResult(intent, 0);
在新开启的界面里面实现设置数据的逻辑
Intent data = new Intent(); data.putExtra("phone", phone); //设置一个结果数据,数据会返回给调用者 setResult(0, data); finish();//关闭掉当前的activity,才会返回数据
在开启者activity里面实现方法
onActivityResult(int requestCode, int resultCode, Intent data) 经过data获取返回的数据
根据请求码和结果码肯定业务逻辑
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(做者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文连接: http://www.cnblogs.com/superdo/p/4892768.html