在按下后退按钮时,我希望我的应用程序进入停止状态,而不是被破坏状态。
在Android文档中,它写道:
...并不是所有的活动都有在按下BACK时被销毁的行为。当用户开始在music应用程序中播放音乐,然后按下BACK,应用程序将覆盖正常的后退行为,防止播放器活动被破坏,并继续播放音乐,即使它的活动不再可见
如何在自己的应用程序中复制此功能?
我认为有三种可能……
Capture the back button press (as below) and then call whatever method(s) the home button calls.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
}
return super.onKeyDown(keyCode, event);
}
Capture the back button press and then spoof a home button press.
Capture the back button press, then start an Activity of the home screen, effectively putting my application's Activity into the stopped state.
编辑:
我了解服务,并且正在使用与此问题相关的应用程序中的一个服务。这个问题是关于在按后退按钮时将Activity置于停止状态而不是破坏状态。
工作示例。
确保不要调用super.onBackPressed();
@Override
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
}
这样你的后退键就像Home键一样。它不会结束你的活动,而是把它带到后台
第二种方法是调用moveTaskToBack(true);在onBackPressed中,确保删除super.onBackPressed
我已经使用@Mirko N. answer使用新的自定义编辑文本
public class EditViewCustom extends EditText {
Button cancelBtn;
RelativeLayout titleReleLayout;
public EditViewCustom(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public EditViewCustom(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EditViewCustom(Context context) {
super(context);
}
public void setViews(Button cancelBtn,RelativeLayout titleReleLayout){
this.cancelBtn = cancelBtn;
this.titleReleLayout = titleReleLayout;
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
Log.d("KEYCODE_BACK","KEYCODE_BACK");
cancelBtn.setVisibility(View.GONE);
this.setFocusableInTouchMode(false);
this.setFocusable(false);
titleReleLayout.setVisibility(View.VISIBLE);
return super.onKeyPreIme(keyCode, event);
}
return super.onKeyPreIme(keyCode, event);
}
}
然后从你的活动中设置数据
searchEditView.setViews(cancelBtn, titleRelativeLayout);
谢谢你!