2015-07-01 130 views
0

在我的應用程序中,我有一個啓動器Activity,它顯示我的徽標並執行一些Web請求,然後啓動主要的Activity並自行完成。 問題是我總是需要Android從啓動Activity啓動我的應用程序並執行請求。但是當用戶在主Activity上按Button時,應用程序進入後臺,一段時間後它將被Android回收。而當用戶再次按下我的應用程序的圖標Android主要活動的星星不是從啓動Activity。 所以我需要任何時候Android回收我的主要Activity它啓動我的應用程序從啓動活動,但不是從主Activity如何強制Android始終從啓動器活動開始

有沒有辦法做到這一點?

回答

1

看看活動生命週期http://developer.android.com/reference/android/app/Activity.html

首先,當應用程序進入onPause() state.then爲什麼你需要再次調用請求的我們的數據沒有什麼會改變?

如果是剛性finish()應用在MainActivity onPause()或者你可以從MainActivity itself.use onResume()調用請求,這樣您就可以獲取應用程序恢復狀態。

0

您可以創建一個StartActivity,它檢查應用程序狀態,然後重定向到正確的Activity,然後銷燬它自己。

例如(重定向到時沒有登錄尚未登錄屏幕):

public class StartActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (MyState.getInstance().isLoggedIn()) { 
      Intent intent = new Intent(this, MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
      startActivity(intent); 
     } else { 
      Intent intent = new Intent(this, LoginActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
      startActivity(intent); 
     } 

     finish(); 
    } 

} 
+0

是我用我的啓動活動這個原因。但是,當用戶登錄時,我需要進行一些網絡請求並更新我的偏好設置中的一些數據,只有在這之後我才能開始主要活動,因爲主要活動取決於該數據。但是當Android直接啓動主要活動時,這些數據可能會過時。 – Andranik

+0

加載後,您可以使用您的意圖中的Bundle傳遞數據。然後使用onSaveInstanceState()和onCreate(Bundle)來保存/恢復你的Actvity狀態。這就好像該活動從未被銷燬...... –

+0

如果您的數據可能無法訪問數據,則可能需要將數據加載到MainActivity中,並向用戶顯示它正在刷新或進行其他操作。 –