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

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,那么将不会新建一个实例压入栈中。

关于android 自己实现 back键 home键的更多相关文章

  1. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  2. Atitit.android js 的键盘按键检测Back键Home键和Menu键事件

    Atitit.android js 的键盘按键检测Back键Home键和Menu键事件 1. onKeyDown @Override public boolean onKeyDown(int keyC ...

  3. Android 屏蔽Power键 Home键

    Android 屏蔽Power键 Home键 标签: androidpower键Home键PhoneWindowManagerframework 2014-04-18 17:22 1557人阅读 评论 ...

  4. 【Android】Android实现监听返回键,主键(HOME),菜单键

    目录结构: contents structure [+] 简介 监听 返回键 监听 主键(Home键) 监听 菜单键 一.简介 本篇文章介绍如何在Android中实现监听返回键,主键,菜单键.一般情况 ...

  5. Android下添加新的自定义键值和按键处理流程【转】

    本文转载自: Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...

  6. Android应用开发按下返回键退向后台执行

    转载请注明来源:http://blog.csdn.net/kjunchen/article/details/50429694 Android应用开发按下返回键退向后台执行 我们日常使用的非常多Andr ...

  7. EF中主表和附表一起提交的话,如果主附表的主键外键已经设定。

    EF中主表和附表一起提交的话,如果主附表的主键外键已经设定,如果新增同时新增主表和附表的记录,那么在EF同时提交时,不需要人为的设定附表的主表的主键值,EF会自动为附表添加外键值.

  8. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库

    第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1.  学习方法 2.  多涨见识 3.  比自己强的人一起,学习更强:比自己更聪明的人 ...

  9. 关系型数据库——主键&外键的

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学 ...

  10. unity监测按下键的键值并输出+unity键值

    using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using U ...

随机推荐

  1. iphone"此证书是由未知颁发机构签名的"的解决办法

    由于误删除,将开发证书给弄没了,导致Certificates中更新的证书都提示此证书是由未知颁发机构签名的,不能实机调试,解决办法是重新下载AppleWWDRCA.cer 地址是:http://dev ...

  2. ios专题 -动画

    知识点 : 1)ios 核心动画的基础是图层.图层的基础是CALayer,它是所有核心图层类的父类. 2)CATransaction是核心动画类负责协调多个动画原子显示更新.事务支持嵌套使用. 3)图 ...

  3. storm简介[ZZ]

    场景 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索 场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的 ...

  4. vs2010 “发生生成错误,运行上次的成功运行的程序”怎么改回不运行。

    当程序出现错误时,会出现下面对话框: 如果选择"是",并且勾选了"不再显示此对话框",对你以后的操作时非常麻烦的. 许多同学想再次调出次窗口,不知道怎么操作,操 ...

  5. 【感悟】看Hyouka的感想 (1)

    最近偶然从B站看到了<冰菓>这个(个人觉得是推理)番   我突然觉得自己曾经做的一些行为欠妥   有才能者的不自知,是对无才能者的讽刺   举个例子就是:即当别人说你很牛的时候,你却说你只 ...

  6. Mysql创建删除索引

    1.查看某个表中的索引 show index from 表名 2.为某个表创建索引 alter table 表名 add index 索引名(列名)    //此种方式创建一般的索引 alter ta ...

  7. ES 必备插件的安装

    1. elasticsearch-head插件的安装,非常好的插件 elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通 ...

  8. Android 中 View移动总结:ViewDragHelper学习及用法详解

    如上图简单呈现出两个方块后,提出一个需求: 1.拖动方块时,方块(即子View)可以跟随手指移动. 2.一个方块移动时,另一个方块可以跟随移动. 3.将方块移动到左边区域(右边区域)后放开(即手指离开 ...

  9. python cookielib

    # HttpClient.py is written by [xqin]: https://github.com/xqin/SmartQQ-for-Raspberry-Piimport cookiel ...

  10. matlab常用小函数(一)

    (第1维为对每一列操作,第2维维对每一行操作) sum 求和操作 max 求最大值操作 sum:求和操作 sum(A):矩阵A按列向求和(每一列求和),结果为一个行向量 sum(A,2):矩阵A按行向 ...