1.Intent 设置级别的时候 不论设置多大 打开Activity 都会在一个级别上
但是当设置的数字 是一个负数的时候 优先级就会比 别的Activity低
2.Intent 当设置了setData的时候 就不能在设置setType不然之前设置的值 就变成null了 反之也是如此。 除非使用setDataAndType()这个方法
3.Activity四种加载模式:
standard:默认方式----当startActivity的时候 每次都会在栈里面创建的一个新的Activity 加入的栈顶
《打开A》《打开B》 点击五下打开A 就会创建5个A的Activity。
singleTop:---当运行startAcivity的时候 他会先判断 ,判断当前栈顶是不是和要创建的Activity的名字一致,如果一样 那么他就不在创建,如果名字不一样,也会重新创建一个。
《打开A》《打开B》 点击五下打开A, 就只会调用刚开始创建的那个A,因为当前栈顶是A,如果交叉点击《一个A,一个B》那么他也会像默认加载一样,一直创建出新的Activity
singleTask:在当前栈中,先判断是否存在Activity,如果不存在,创建一个新的Activity入栈,如果存在,会把这个Activity所在的栈上面的所有Activity给清除出去,然后显示这个Activity。
《打开A》《打开B》A,A,B,A, 在点击B的时候 ,就不会在创建B了 而是把 B上面这个A给清除出去, 从而显示B。
singleInstance:类似单例设计模式,会新创建一个栈,把新创建的Activity实例放入栈中,每个栈只能有一个Activity,如果又来一个不一样的Activity,就会在创建一个栈。
《打开A》《打开B》《打开C》点击AB会创建2个栈 分别存放A和B而且只能存放一个,在点击C会在创建一个新的栈把C的Activity放入进来。 类似浏览器网页来回切换状态。
4.flag:
NEW_TASK: 在新的栈中创建一个Activity,如果有这个Activity,就在本栈中启动
CLEAR_TASK:相当于singleTask
CLEAR_TOP:相当于singleTop
5.Intent常用实例:
public void uninstallClick(View v) { //卸载程序 Uri data=Uri.parse("packge:要卸载的程序的包名"); String action =Intent.ACTION_DELETE; Intent intent=new Intent(action,data); startActivity(intent); } public void installClick(View v) { //安装程序 Uri data=Uri.fromFile(new File("/指定路径下面的.apk")); String action=Intent.ACTION_VIEW; Intent intent=new Intent(); intent.setAction(action); //第二个参数是 一个MIME类型的具体表现。 intent.setDataAndType(data,"application/vnd.android.package-archive"); startActivity(intent); }