Android 主页键和最近应用键的处理onUserLeaveHint

相比主页键(HOME)和最近应用键(APP_SWITCH)的处理,返回键比较简单,复写onKeyDown就可以实现,如下:

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //  KeyEvent.KEYCODE_HOME  KeyEvent.KEYCODE_APP_SWITCH
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exitAction();
            return true;
        } else
            return super.onKeyDown(keyCode, event);
    }

HOME和APP_SWITCH比较复杂,尤其是HOME键,如果不特殊设置,有可能会被恶意应用利用。所以即使是处理了HOME键,实测会首先进入Launcher,一段时间后才会执行我们的操作,想必这也是系统层从安全角度的考量,有时间看一下系统源码。

尝试过多种方式之后,复写onUserLeaveHint函数比较便捷,如下即可:

 @Override
    protected void onUserLeaveHint() {
        //super.onUserLeaveHint();
        exitAction();
    }

把操作写在了exitAction函数中,这里以启动设置为例:

 private void exitAction() {
        try {
            Intent intent = new Intent();
            ComponentName componentName = new ComponentName("com.android.settings",
                    "com.android.settings.Settings");
            intent.setComponent(componentName);
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui

我的GitHub:周木水的GitHub https://github.com/zhoumushui

时间: 2024-08-11 09:57:55

Android 主页键和最近应用键的处理onUserLeaveHint的相关文章

发送WIN+SAPCE键,WINDOWS,空格键

键盘代码部份转自:http://www.cnblogs.com/cpcpc/archive/2011/02/22/2123055.html 由于喜欢用CTRL+空格键切换输入法,在WIN8上有所不习惯,所以写了个小程序,当按CTRL+空格键时向系统发送WIN+空格键. 首先使用全局快捷键,监视CTRL+空格的输入,然后再发送WIN+空格键. [DllImport("user32.dll", SetLastError = true)] public static extern bool

主键,组合主键,聚集索引,非聚集索引,唯一索引

前言: 基于Oracle数据库谈谈索引们的问题,以及在什么情况下使用什么索引, 组合主键,怎么根据实际业务需求来定制自己的索引,主键的应用,来提升系统的性能. 1:主键? 在表中唯一的,也是聚集索引.作用于快速查询.该列唯一. Java代码 复制代码 收藏代码 1.ID NUMBER(38,0) PRIMARY KEY NOT NULL, 2:组合主键? 在表中以多个字段组成在表中是唯一的,也是聚集索引.作用于快速查询.该组合列唯一. Java代码 复制代码 收藏代码 1.CREATE TABL

外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl

表关联时,外键关联非主键id时-hbm.xml配置: (由于hibernate默认为关联主键查询,故需要配置相关hql语句的属性) <many-to-one name="areas" class="com.hnqy.entity.Areas" fetch="select" property-ref="areaid" foreign-key="areaid"> <column name=&q

SQL 主键 自动编号 主键自增

1.新建一数据表,里面有字段id,将id设为为主键 代码如下: create table tb(id int,constraint pkid primary key (id)) create table tb(id int primary key ) 2.新建一数据表,里面有字段id,将id设为主键且自动编号 代码如下: create table tb(id int identity(1,1),constraint pkid primary key (id)) create table tb(i

主键,子外键查询

主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值.由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列. 主键的作用 主键的主要作用如下: (1)保证实体的完整性: (2)加快数据库的操作速度: (3) 在表中添加新记录时,数据库会自

笔记:oracle关于使用代理主键还是逻辑主键的好?

总结几点体会: 第一点:统一. 最近参与的项目,其公共模块(单位表.人员信息表等)全部使用的是代理主键,而集成进来的数据模型又使用的是逻辑主键.为了最大限度的使用已经写好的存储过程.函数等对象,公共模块的数据必须按照一定规则映射一份到集成进来的模块中,这就增加了数据库维护的工作量和难度:java程序使用的持久层是hibernate,在设计javabean的时候也要考虑这种情况,是的java程序员在处理单位信息的时候不得不建立2各javabean,还需要在java程序中进行手动转换,非常耗时. 针

SortedDictionary&lt;TKey, TValue&gt; 类 表示根据键进行排序的键/值对的集合。

SortedDictionary<TKey, TValue> 类   表示根据键进行排序的键/值对的集合. SortedDictionary<TKey, TValue> 中的每个键必须是唯一的. 键不能为 null,但是如果值类型 TValue 为引用类型,该值则可以为空.SortedDictionary 可对未排序的数据执行更快的插入和移除操作.

swift基本用法-字典NSDictionary的定义,修改键值,删除/添加键值

// Playground - noun: a place where people can play import UIKit //------------------------------------------------------------------------------ // 1. 定义固定格式的字典 // dict1的所有"键值"类型一致(都是字符串) var dict1 = ["name": "mary", "a

Oracle数据库,非空约束、主键约束、外键约束、唯一约束

非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复 主键约束:主键列自动具有非空约束和唯一约束,一个表只能有一个主键约束(自动生成索引,提高查询效率)

对逻辑主键、业务主键和复合主键的思考

转载的: http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. ? ? 定义(部分定义来源于 SQL Server 联机丛书): 主键(PR