首页 > 代码库 > 捕获home按键
捕获home按键
原理:onKeyDown和onKeyUp方法是无法捕获home按键的。按home按键程序并没有退出(窗口的生命周期执行到onStop方法,参见Activity生命周期博文的介绍)只是切换到后台运行了。而按下back按键或者调用finish方法则关闭当前的程序,当前窗口的生命周期也就结束了。系统会在调用onDestory方法后释放窗口对象(但一些资源并未释放,如静态变量),按home和back键都执行的最后一个方法是onStop,所以很容易想到在onStop方法中处理按home键的动作;由于窗口不管以任何方式关闭,都会调用Activity.finish方法,而且该方法是在调用窗口生命周期方法之前就调用了,也就是说调用onPause方法之前会首先调用finish方法,而按下home键系统并不会调用finish方法,所以覆盖finish方法,并在finish方法中设置标志即可解决这个问题。
package com.example.showdatetime1; import com.example.showdatetime3.R; import android.app.Activity; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends Activity { private boolean isFinished; private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStart() { Toast.makeText(this, "窗口已经恢复", 0).show(); super.onStart(); } @Override protected void onStop() { if (!isFinished) { Toast.makeText(this, "按下了home按键", 0).show(); } super.onStop(); } @Override public void finish() { isFinished = true; super.finish(); } }
捕获home按键
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。