Redirection樣本涉及到三個Acitivity: RedirectEnter, RedirectMain,RedirectGetter。樣本的主Activity為 RedirectEnter ,RedirectEnter 啟動 RedirectMain, 而Activity 會根據某個條件來決定是否將應用的控制權傳給RedirectGetter 或是保持在RedirectMain。
應用代碼中使用到了Shared Preferences (在之前的樣本中介紹過)。 RedirectMain 將檢查某個shared preferences 值是否存在:
// Retrieve the current text preference. If there is no text<br />// preference set, we need to get it from the user by invoking the<br />// activity that retrieves it. To do this cleanly, we will<br />// temporarily hide our own activity so it is not displayed until the<br />// result is returned.<br />if (!loadPrefs()) {<br /> Intent intent = new Intent(this, RedirectGetter.class);<br /> startActivityForResult(intent, INIT_TEXT_REQUEST);<br />}
其它用到的還有startActivityForResult 。這個例子沒有什麼新的知識,只是涉及到了三個Activity。示範了如何根據條件觸發不同的Activity,將應用控制權Redirection到不同的Activity。
這個例子使用者點擊“Go”按鈕,RedirectEnter 啟動RedirectMain ,RedirectMain 會根據shared preferences是否有值決定是否redirect 到RedirectGetter, 第一次或是點擊”Clear and Exit”後,shared preferences 中不含有text值,應用會顯示RedirectGetter 來取的使用者輸入,此時如果使用者輸入並“Apply”後,RedirectGetter將在Shared Preference儲存textView
的值。此後,按“Back” 退回Activity List再啟動RedirectEnter,按“GO”,由於Shared Preferences中有值,RediectMain不會把應用的控制權Redirect到RedirectGetter.