如何防止以前的InstanceState数据重新启动活动
问题描述:
我有一项活动是从我的主要活动中打开的。当它使用后退按钮关闭然后重新启动时,它将使用先前的实例状态打开,而不是像新建一样打开。如何防止以前的InstanceState数据重新启动活动
主要活动
\t public void onPerformButtonClick(View view)
\t {
\t Intent performActivity = new Intent(getBaseContext(), PerformActivity.class);
\t //start lyric activity
startActivityForResult(performActivity, MAIN_PERFORM_MODE); \t \t
\t \t
\t }
的PerformActivity
\t @Override
\t protected void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
setContentView(R.layout.perform_main);
\t \t //reload state on orientation change or wake up
\t \t if (savedInstanceState != null) {
\t \t \t if (mPlayList == null) {
\t \t \t \t mPlayList = new PlayList(getBaseContext());
\t \t \t }
\t \t \t mPlayList.removePlayListListener();
\t \t \t mPlayList.setPlayListListener(new PlayListListener() {
\t \t \t \t @Override
\t \t \t \t public void onPlayListDataUpdate() {
\t \t \t \t \t updateSetListData();
\t \t \t \t }
\t \t \t });
\t \t \t mPlayList.loadState(savedInstanceState.getBundle("playlist"));
\t \t \t if (mTimeLine == null) {
\t \t \t \t mTimeLine = new TimeLine();
\t \t \t }
\t \t \t mTimeLine.removeTimeLineListener();
\t \t \t mTimeLine.loadState(savedInstanceState.getBundle("timeline"));
\t \t }
.....
\t }
\t @Override
\t protected void onSaveInstanceState (Bundle outState) {
\t \t super.onSaveInstanceState(outState);
\t \t Bundle playlist = mPlayList.saveState();
\t \t outState.putBundle("playlist", playlist);
\t \t Bundle timeline = mTimeLine.saveState();
\t \t outState.putBundle("timeline", timeline);
\t }
\t private void doFinish()
\t {
\t \t finish();
\t }
我相信这是一些简单的我我错过了。
总结: 我希望应用在屏幕方向更改方面表现良好,但当用户按下后退按钮时,我希望先前的状态消失。
答
将此代码添加到PerformActivity中。这将完成按下后退按钮上的活动。
@Override
public void onBackPressed() {
if(null!=this){
finish();
}
super.onBackPressed();
}
你想重新用新鲜的数据 –
每次我按下运行的按钮活动onPerformButtonClick我想performActivity的新新实例来运行。没有任何以前的instanceState数据加载 – Dan
是否有可能用于创建performActivity每次没有以前的实例状态意向标志? – Dan