Android编程心得---捕捉Home键事件的完美解决方法


大家好,欢迎来到杜光的博客:http://blog.csdn.net/duguang77  (分享==快乐)


------------------------------------------------------------------------------------------------------------------------------------------------------------------------

之前看网上介绍捕捉Home键的方法:

在按键中KeyEvent.KEYCODE_BACK返回键是可以直接监听的,但Home键是在framework监听,那么监听Home的方法就是:
第一:在Activity中加入,重写onAttachedToWindow,以实现屏蔽Home键.
@Override
    public void onAttachedToWindow() {
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }
第二在按键监听中加入Home键处理代码。

但是这种方法在模拟器中是可以被捕捉到的,但是到真机上是不行的!!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------


今天我给大家介绍一种简单又能捕获到Home键的方法:

大家都知道Back键和Home键的区别

按Back键会执行Activity中的Finish()方法,而按Home只是执行到Activity的onStop()为止,程序会切换到后台,重新调用程序后会执行onStart();方法

下面我就贴出Demo的代码,大家一看即明白


public class MainActivity extends Activity {

	private boolean isFinish;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initdata();
	}
	
	private void initdata() {
		isFinish = false;
	}

	@Override
	protected void onStart() {
		Toast.makeText(this, "亲,短暂的失去你,我又回到了你的怀抱!", 1).show();
		super.onStart();
	
	}
	
	@Override
	protected void onStop() {
		//isFinish = false; 则表明程序被切换到后台或按了home键
		//isFinish = true;  则表明程序被杀掉或者按下back键退出了
		
		if (!isFinish) {
			Toast.makeText(this, "亲,你按了Home键,不想要我了么!", 1).show();
		}
		
		super.onStop();
	}
	
	@Override
	public void finish() {
		isFinish = true;
		super.finish();
	}

}

备注:有些手机按Home键后不会执行onStop方法();


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值