关于android 自己实现 back键 home键, Intent flag 的一些用法

今天在被问到一个问题的时候突然想要看看这些东西了。因为一直以来,我返回上个界面,和大家普遍的方法都是一样的。

1. finish()本页面。

2. intent 跳转到上个页面。


一 ,在 按下手机上的 back键时  本页面输出的log是(  onstop  ,onDestory)



经过查找是可以用别的方法实现 back键的功能的

1.第一种方法   在你自己的事件里调用。

 //RunTime.exec()这个接口可以说是给我们开发者提供了一个很好的直观操作底层操作系统
			Runtime runtime = Runtime.getRuntime();
			try {
				
				runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK);
				
			} catch (IOException e) {
			}

2.第2种

 Thread th = new Thread(){
		
	  public void run() {       //这个方法是不能写在你的主线程里面的,所以你要自己开个线程用来执行
			      
		Instrumentation inst = new Instrumentation();
			
			try {			
				inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
			} catch (Exception e) {
				System.out.println("==="+ e.toString());
			}
			
		};
	};

结果2种方法输出的log:(关于 Runtime 和 Instrumentation可以查查资料)




二 ,在 按下手机上的 home 键时  本页面输出的log是(  onstop  ,onDestory)



实现类似home键的代码 :

	
			 Intent intent = new Intent(Intent.ACTION_MAIN);
			 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);	       
		        //如果intent不指定category,那么无论intent filter的内容是什么都应该是匹配的。
		        intent.addCategory(Intent.CATEGORY_HOME); 
		        startActivity(intent);


接下来

一. intent.setFlags()方法中的参数值含义:

//	      1.FLAG_ACTIVITY_CLEAR_TOP:
//	      
//	      比如 :       现在情况是    A B C D E F G   ,你想从 G 跳到  C  就会变成   A B C D E F G C
//	      加上的话:    A B C (C 后面的 E F G 都会弹出销毁)
//	      这跟上面把 C 的Launch mode设置成singleTask 一样的。
//	      
//	      2.FLAG_ACTIVITY_NEW_TASK:
//	      比如: A B C D E F  我现在要从  F 跳转到 G    就变成   A B C D E F G 了
//	      如果从Service启动1个activity 然后加上的话,就会创建出1个新栈  存放 G了
//	     
//	      
//	      3.FLAG_ACTIVITY_NO_HISTORY:
//	      顾名思义 没有历史记录。  比如 :  A B C D E       E 跳转到 F    :(F没有压入栈中,所以没有记录 栈中还是  A B C D E),
//	                                                      再从F跳转到 G :  A B C D E G 就变成这个样子了 返回的话也是从 G到 E。
//	      
//	      
//	      4.FLAG_ACTIVITY_SINGLE_TOP:
//	      和Activity的Launch mode的singleTop类似。如果某个intent添加了这个标志,并且这个intent的目标activity就是栈顶的activity,
//	      那么将不会新建一个实例压入栈中。



  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空白的泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值