在我的应用程序中,我有5个活动,不包括主要活动我以循环方式反复使用其他4个活动。
在我的每个活动中(主要除外)onPause()方法我写了Activityname.this.finish();
当我在第5个活动结束周期并返回主要活动时......
但我的问题是当我结束主要活动时...而不是关闭应用程序,它会转到第3个活动。
我不知道问题到底在哪里。可能在第三个活动中使用db n而不是显式关闭它。这是一个问题吗?
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
PlayerDetails.this.finish();
}
这个onPause()方法我使用
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode==KeyEvent.KEYCODE_BACK){
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setIcon(R.drawable.ic_launcher);
alert.setTitle(R.string.app_name);
alert.setMessage("Really Exit?");
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
@Override
public void onClick(final DialogInterface dialog, final int which) {
MainActivity.this.finish();
dialog.dismiss();
}
});
alert.setNegativeButton("No", new DialogInterface.OnClickListener(){
@Override
public void onClick(final DialogInterface dialog, final int which) {
dialog.dismiss();
}
});
try{
AlertDialog dialog = alert.create();
dialog.show();
}
catch(Exception e){
e.printStackTrace();
}
}
return true;
}
这是关闭应用程序的mainActivity方法
答案 0 :(得分:4)
您可以在每个活动中使用Flags而不是每次都调用finish()
。当您启动新活动时,只需使用FLAG_ACTIVITY_CLEAR_TASK
后跟FLAG_ACTIVITY_NEW_TASK
Intent
,这将清除堆栈缓冲区并以新的方式启动活动。类似......
Intent intent = new Intent(current_context, destination_activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
您可以在此conversation找到有关Flags的更多信息。
答案 1 :(得分:1)
使用onStop()覆盖方法而不是使用onPause(),由于某些原因onPause可能不是调用而是onStop会。
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onPause();
finish();
}