activity的四种启动模式,隐式意图

activity、任务和栈=======================================
同一个任务中才会在同一个回退栈中
所有的activity都出栈后,任务就消失了


一个任务由多个相关联的Activity实例构成
一个任务对应一个回退栈
同一个任务中的Activity实例位于同一个回退栈中
Activity实例没有了则任务也不存在了
Activity实例是按照被启动的顺序入栈的
Activity实例在栈中的顺序是不会改变的
位于栈顶的Activity实例就是当前可以和用户交互的activity实例
默认情况下使用Intent启动一个Activity都是创建该Activity的一个实例

启动模式:
standard:
SingleTop:如果一个Activity的模式是SingleTop,而且位于回退栈的栈顶,那么再次启动该Activity时,不会创建新的实例,直接使用栈顶的实例,回去回调onNewIntent()方法。如果一个Activity的模式是SingleTop但不位于栈顶,那么还会创建新的实例。(主界面)
SingleTask:只有一个实例,它允许其它的Activity位于同一个任务中,(位于同一个任务中的activity就位于同一个任务中),当已经存在该启动模式的activity实例,又再次启动时,使用已经存在的实例,但是会把位于该实例之上的所有的Activity实例销毁掉
SingleInstance:任务栈中只能有这样一个Activity,当独在一个栈中,不会销毁任意一个activity(来电显示界面)
launchMode:启动模式(清单文件中)



Intent隐式意图:(通过action和category来指明)
在清单文件中配置:(隐式匹配的最低配置:一个action,一个category而且category 必须为android.intent.category.DEFAULT)
<activity android:name=".TargetActivity">
    <intent-filter>
        <action android:name="hello.world"/>
        <category android:name="android"/>
        <action android:name="hehhe"/>//action的name随便写
        <category android:name="/.DEFAULT">
    </intent-filter>
</activity>
Intent intent=new Intent();
intent.setAction("hehhe");
startActivity(intent);//该方法默认加入了category android.intent.category.DEFAULT
当有多个activity匹配隐式意图时会显示多个activity让用户选择

调用系统的拨打电话的功能(需要添加权限,打电话的权限)
Intent intent=new Intent();
intent.setAction("android.intent.action.CALL");
intent.setData(Uri.parse("tel://120"));
startActivity(intent);
发送短信:
intent.setAction(Intent.Action_SENDTO);
intent.setData(Uri.parse("smsto://"))
Intent.Action_View播放音乐
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值