home 监听 实现方式

1. onUserLeaveHint() 用户手动离开当前activity,会调用该方法,比如用户主动切换任务,短按home进入桌面等。
系统自动切换activity不会调用此方法,如来电,灭屏等。 如果仅仅是想在HOME键按下后,做些处理,可以复写如下方法


2. 每次点击Home按键时都会发出一个action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,
它是关闭系统Dialog的广播,我们可以通过注册它来监听Home按键消息


/** 
 * Home按键监听类 
 * 使用说明: 
 * 1、初始化HomeListen 
 * HomeListen homeListen = new HomeListen( this ); 
 * homeListen.setOnHomeBtnPressListener( new setOnHomeBtnPressListener(){ 
 *      @Override 
 *      public void onHomeBtnPress( ){ 
 *          // 按下Home按键回调 
 *      } 
 *       
 *      @Override 
 *      public void onHomeBtnLongPress( ){ 
 *          // 长按Home按键回调 
 *      } 
 * }); 
 *  
 * 2、在onResume方法中启动HomeListen广播: 
 * homeListen.start(); 
 *  
 * 3、在onPause方法中停止HomeListen广播: 
 * homeListen.stop( ); 
 * */  
public class HomeListen {  
    public HomeListen(Context context) {  
        mContext = context;  
        mHomeBtnReceiver = new HomeBtnReceiver( );  
        mHomeBtnIntentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);  
    }  
      
    public void setOnHomeBtnPressListener( OnHomeBtnPressLitener onHomeBtnPressListener ){  
        mOnHomeBtnPressListener = onHomeBtnPressListener;  
    }  
      
    public void start( ){  
        mContext.registerReceiver( mHomeBtnReceiver, mHomeBtnIntentFilter );  
    }  
      
    public void stop( ){  
        mContext.unregisterReceiver( mHomeBtnReceiver );  
    }  
      
    class HomeBtnReceiver extends BroadcastReceiver{  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            receive( context, intent );  
        }  
    }  
      
    private void receive(Context context, Intent intent){  
        String action = intent.getAction();  
        if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {  
            String reason = intent.getStringExtra( "reason" );  
            if (reason != null) {  
                if( null != mOnHomeBtnPressListener ){  
                    if( reason.equals( "homekey" ) ){  
                        // 按Home按键  
                        mOnHomeBtnPressListener.onHomeBtnPress( );  
                    }else if( reason.equals( "recentapps" ) ){  
                        // 长按Home按键  
                        mOnHomeBtnPressListener.onHomeBtnLongPress( );  
                    }  
                }  
            }  
        }  
    }  
      
    public interface OnHomeBtnPressLitener{  
        public void onHomeBtnPress( );  
        public void onHomeBtnLongPress( );  
    }  
      
    private Context mContext = null;  
    private IntentFilter mHomeBtnIntentFilter = null;  
    private OnHomeBtnPressLitener mOnHomeBtnPressListener = null;  
    private HomeBtnReceiver mHomeBtnReceiver = null;  

}  

参考资料 : 

http://blog.csdn.net/ekeuy/article/details/39400939

http://blog.csdn.net/u014631944/article/details/51407550


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值