简体   繁体   English

如何防止活动从以前的InstanceState数据重新开始

[英]How to prevent activity re-starting with previous InstanceState data

I have an activity that is opened from my main activity. 我有一个从主要活动中打开的活动。 When it is closed using the back button and then restarted it is opening using the previous instancestate instead of opening as if it was new. 当使用后退按钮将其关闭然后重新启动时,它是使用以前的instancestate打开的,而不是像是新打开的那样。

The Main activity 主要活动

  public void onPerformButtonClick(View view) { Intent performActivity = new Intent(getBaseContext(), PerformActivity.class); //start lyric activity startActivityForResult(performActivity, MAIN_PERFORM_MODE); } 

The PerformActivity PerformActivity

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.perform_main); //reload state on orientation change or wake up if (savedInstanceState != null) { if (mPlayList == null) { mPlayList = new PlayList(getBaseContext()); } mPlayList.removePlayListListener(); mPlayList.setPlayListListener(new PlayListListener() { @Override public void onPlayListDataUpdate() { updateSetListData(); } }); mPlayList.loadState(savedInstanceState.getBundle("playlist")); if (mTimeLine == null) { mTimeLine = new TimeLine(); } mTimeLine.removeTimeLineListener(); mTimeLine.loadState(savedInstanceState.getBundle("timeline")); } ..... } @Override protected void onSaveInstanceState (Bundle outState) { super.onSaveInstanceState(outState); Bundle playlist = mPlayList.saveState(); outState.putBundle("playlist", playlist); Bundle timeline = mTimeLine.saveState(); outState.putBundle("timeline", timeline); } private void doFinish() { finish(); } 

I am sure it is something simple that I am missing. 我确信这很简单,我很想念。

In summary: I want the app to behave nicely with screen orientation changes but when the user press the back button I want the previous state to be gone. 总结:我希望应用程序在屏幕方向更改时表现良好,但是当用户按下“后退”按钮时,我希望以前的状态消失。

Add this code in PerformActivity.This wil finish the activity on pressing back button. 在PerformActivity中添加此代码。这将在按返回按钮时完成活动。

@Override
public void onBackPressed() {
   if(null!=this){
       finish();
   }
   super.onBackPressed();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM