我正在爲學校製作Android應用程序。重新使用活動,無需重新創建
第一次活動是學生其中包含一個ViewPager由3個片段組成。由於它包含3個片段,因此該活動的加載非常昂貴。
1片段包含遊戲的一個ListView
第二個片段包含卡通
第三片段的ListView控件包含測試的一個ListView(ListView中只包含測試的名稱)。
現在測試片段的onClick上測試(在列表視圖顯示)的一個新的ShowTest活動是打開時其顯示的完整的測試。
每件事情都很好。
這是在TestFragment代碼開始ShowTest活動
test.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent it = new Intent(getActivity(), ShowTest.class);
startActivity(it);
}
});
而在ShowTest活動我打電話完成();
public void onBackPressed() {
this.finish();
}
但onBackpressed時ShowTest()被調用學生活動重新創建(在片段每一件事情重新加載)。我不希望第二次創建此活動。因爲加載很昂貴。
這兩個環節不幫我
Open Info Activity without closing Main Activity
Android - Relaunching an activity without having to re-create it
您的幫助將不勝感激。
謝謝(編輯)
這取決於你如何開始你的活動以及代碼的相關部分在哪裏。例如,如果您完成活動並進入下一個活動,並從該活動回到第一個活動,則會重新創建活動。如果你沒有完成,通常活動停留在後臺。那麼所有的代碼都是很重要的......如果你在onResume()中初始化所有的東西,那麼所有的代碼都會重新執行。您一定要閱讀活動生命週期:https://developer.android.com/guide/components/activities/activity-lifecycle.html – Opiatefuchs
沒有辦法保證這一點。如果Android檢測到內存問題,它將關閉不在前臺的活動,並在需要時再重新創建它們。沒有辦法覆蓋該行爲(實際上唯一的選擇是隨時打開它進行測試)。 –
發佈您用於啓動ShowTestActivity,您的onBackPressed()方法和任何其他相關代碼的代碼。 –