如何捕捉Home键的动作——原创

Android 学习自修笔记(三)
如何捕捉 Home 键的动作
                                              ————将军的Android 自修之途
onkeydown onkeyup 方法无法来捕获 Home 的动作,那么如何来捕获 Home 键呢?
大家都知道,按 Home 键程序并没有退出(窗口的生命周期只执行到 onStop 方法),只是切换到后台运行了。而按 Back 键或调用 finish 方法则关闭当前程序,当前窗口的生命周期也就结束了。系统会在调用 onDestroy 方法后释放窗口对象(但一些资源并未释放,如静态变量),按 Home Back 键都执行的最后一个方法是 onstop, 所以很容易想到在 onstop 方法中处理按 Home 键的动作。
由于窗口不管以何种方式关闭(按 Back 键、执行 finish 方法等),都会调用 Activity.finish 方法,而且该方法是在调用窗口生命周期之前就调用了,也就是说调用 onpause 方法之前会首先调用 finish 方法。而按 Home 键系统并不会调用 finish 方法,所以覆盖 finish 方法,并在 finish 方法中设置标志即可解决这个问题。
代码如下:
public class CycleActivity extends Activity {
    //true :窗口退出        false :窗口切换到后台执行,并没有退出
    private boolean isFinished ;
    protected void onStart()
    {
       Toast.makeText( this , " 窗口已经恢复 " , Toast. LENGTH_LONG ).show();
       super .onStart();
    }
    // 当窗口移到后台执行或退出时执行该方法
    protected void onStop()
    {
       // 如果 isFinished=false ,表示当前窗口只是切换到后台运行,并没有退出
       if (! isFinished )
       {
           Toast.makeText( this , " 窗口已经在后台运行(按了 Home 键)! " , Toast. LENGTH_LONG ).show();
       }
       super .onStop();
    }
    // 只要窗口退出,就一定会调用 finish 方法
    public void finish()
    {
       // 设置标志
       isFinished = true ;
       super .finish();
    }
}
总结:按 Home 键就相当于将当前程序切换到后台运行,而按 Back 键相当于退出程序,因此该问题也就转换成判断程序是否切换到后台运行的问题。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值