我所拥有的书籍在解释如何处理生命周期方面非常糟糕,我遗漏了很多我希望有人能补充的东西。
我的应用程序结构是,当它第一次启动时,它会启动一个用户必须接受的充满法律问题的活动。当他说“好的”时,我开始我的主要活动,然后我像这样调用完成:
public void onClick(View view) { //as a result of "I accept"
Intent mainIntent = new Intent(mParent, EtMain.class);
startActivity(mainIntent); // Start the main program
finish();
}
然后在 onCreate 方法的 EtMain 中,我有一些选项卡,我实例化了一些类:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
SetupTabs.setMyTabs(mTabHost, this);
mComData = new ComFields(this); // Create the objects
mDepWx = new WxFields(this, DepArr.Departure);
mArrWx = new WxFields(this, DepArr.Arrival);
mDepVs = new DepFields(this);
mArrVs = new ArrFields(this);
mTabHost.setOnTabChangedListener(new OnTabChangeListener(){
}
问题:第一个片段中的“完成”应该终止 legalbabble 活动,因此它永远不会重新启动,对吗?即使我的应用程序被推到后台,EtMain 也将永远存在(直到被外部杀死),对吗?
现在的方式是,当 EtMain 被推动并随后被带到前台(通过点击图标)时,它会通过 legalbabble 屏幕,就好像这是一个完整的开始 - 这就是我想要阻止的 - 通过 legalbabble再次屏幕。
看来我想在第二个代码片段中覆盖 onRestart 并在那里放一些东西来重新启动应用程序,对吧?这是我不清楚的部分。
我的问题是在 onRestart 中需要做什么。我是否必须重新创建选项卡中的所有选项卡和数据以及我的所有对象实例化?或者应用程序的内存状态是否保存在某个地方,然后恢复到它在其他东西被带到前台之前的状态,在这种情况下不需要做太多事情,因为所有对象和侦听器仍然存在?