0
我想了解Android網站上的活動測試教程。其中一個測試在SpinnerActivity示例中設置了一個微調器,強制暫停,然後重置微調器,強制恢復,然後驗證應用程序是否正確恢復了狀態。我在這個問題的底部粘貼了相關代碼以供參考。Android活動測試示例混淆了OnPause期望
我很困惑爲什麼編寫測試的人認爲Spinner可能在OnPause()和OnResume()之間被破壞。這是因爲微調控制器可能在以後的一些活動中被重用,從而失去了它的狀態?這是我能想到的唯一合理的解釋。
我很關心保留我的應用程序的活動非小部件成員,如字符串,整數等。這些在OnCreate中初始化並且不會被用戶更改。因此,我認爲沒有理由在OnPause期間將其保存,因爲即使OS在暫停後直接終止活動,OnCreate()也會重新初始化這些成員。
是否安全,然後假設暫停時,這些非小部件成員將不會受到傷害(假設應用程序最終恢復?)
public void testStatePause() {
Instrumentation mInstr = this.getInstrumentation();
mActivity.setSpinnerPosition(TEST_STATE_PAUSE_POSITION);
mActivity.setSpinnerSelection(TEST_STATE_PAUSE_SELECTION);
mInstr.callActivityOnPause(mActivity);
mActivity.setSpinnerPosition(0);
mActivity.setSpinnerSelection("");
mInstr.callActivityOnResume(mActivity);
int currentPosition = mActivity.getSpinnerPosition();
String currentSelection = mActivity.getSpinnerSelection();
assertEquals(TEST_STATE_PAUSE_POSITION,currentPosition);
assertEquals(TEST_STATE_PAUSE_SELECTION,currentSelection);
}
我認爲我的困惑源自於我期望在OnCreate()內的步驟6中涵蓋的第7步的行爲。如果活動已終止,OnResume()將不會在沒有事先OnCreate()調用的情況下調用,對吧?在OnResume()中,當它只能在OnCreate()需要處理時,我看不到在OnResume()中產生這種通常不必要的上下文恢復開銷的價值。我誤解了什麼嗎? – 2010-09-23 15:33:33
你說得對,我不認爲你有任何理由不能在onCreate中處理。儘管如此,你確實需要將它保存在onPause中。 – 2010-09-23 16:02:47