以下代码是捕获系统的返回按键和HOME按键,确认退出后kill掉进程。这样就没有不小心留下的线程,导致手机管理软件发现这个程序还在运行。
//加上这个就能够捕捉Home键了
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
//TODO 系统按键处理事件
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
AudioManager audio = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
audio.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE,
AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audio.adjustStreamVolume(
AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER,
AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
return true;
}
//如果是Home键释放资源,结束
if(keyCode==KeyEvent.KEYCODE_HOME)
{
stopService(music_service_intent);
finish();
android.os.Process.killProcess(android.os.Process.myPid());//关闭整个程序
return true;
}
//按下键盘上返回按钮
if(keyCode == KeyEvent.KEYCODE_BACK){
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage("确认退出翻翻看吗?")
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
stopService(music_service_intent);
finish();
android.os.Process.killProcess(android.os.Process.myPid());//关闭整个程序
}
}).show();
return true;
}else{
return super.onKeyDown(keyCode, event);
}
}