标签:des android style color os ar java sp art
原理: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();
}
}
标签:des android style color os ar java sp art
原文地址:http://blog.csdn.net/eeeduo/article/details/39933149