我都在解釋如何使用生命週期的工作糟糕透頂的書籍,還有很多我的思念,我很希望有人可以填寫。如何處理活動即將再次前景
我的應用程序結構當它剛開始的時候,它開始了一個充滿法律可言的活動,用戶必須接受。當他說「OK」,我開始我的主要活動,然後我把完成這樣的:
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();
}
然後在EtMain在onCreate方法,我有一些標籤和我實例化一些類:
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需要做什麼。我是否必須重新創建選項卡中的所有選項卡和數據以及所有對象實例?或者是應用程序的內存狀態保存在某個位置,然後恢復到其他位置被置於前臺的狀態,在這種情況下沒有太多需要完成的操作,因爲所有對象和偵聽器都仍然存在?
請參閱勞倫斯道森的第一點。還搜索關於「首次運行」代碼的問題。您可以使用SharedPreferences檢查'首次運行'場景,並且如果條目不存在,則您的代碼將返回false。一旦你完成了合法的喋喋不休,只要寫一些'SharedPreferences',它就不會再顯示(除非用戶卸載/重新安裝)。這是相當直接的東西。 – Squonk