2013-04-29 137 views
1

我嘗試首先使用onStart()或onResume()。但是,使用它們有兩個缺點。Android中是否存在與applicationDidBecomeActive等效的方法?

1,如果我開始另一項活動並稍後解散它,如下所示。 (有點像模態存在的新的ViewController,然後關閉它)

private void dismiss() { 
    Intent intent = new Intent(); 
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    intent.setClass(this, MainActivity.class); 
    startActivity(intent); 
    finish(); 
} 

的onResume()將仍然被稱爲

2,我不能重用在其他活動相同的登錄。

因此,我不知道是否有在Android的一個方法是完全一樣的 - (空)applicationWillResignActive:在Android的

+0

那你嘗試做什麼呢? – 2013-04-29 02:45:54

回答

0

如果你把MainActivity使用您的dismiss()代碼前,你可以在MainActivity.onNewIntent()這樣檢測的:

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    if ((intent & Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) != 0) { 
     // I've been brought to the FRONT by another activity 
    } 
} 

這是否幫助?我不是100%確定我明白你想要什麼。

0

(UIApplication的*)應用程序來檢查,如果用戶登錄或沒有,你可以使用sharedPreferences在android中。這些與iOS中的NSUserDefaults類相似。當用戶登錄並在onResume中再次檢查是否要再次運行登錄過程時,在sharedPrefs中保存一個布爾值。

3

您可以使用onRestart()方法。只有當您的應用程序從背景進入前景時纔會調用此方法。

相似的兩種方法:

它類似於appDidBecomeActive在 「若干案例」。無論您何時進入背景,即從活動到主屏幕,都會調用onPause(),接着調用onStop()方法。然後你重新回到android中的應用程序,然後onRestart(),然後調用onPause()方法。

生命週期中的iOS當去背景的主屏幕:(應用程序代理生命週期方法) appWillEnterForeground - > appDidBecomeActive

生命週期中的Android,而即將前景從主屏幕:(活動生命週期方法) onRestart() - >的onResume。

從上面看來,onRestart類似於appWillEnterForeground,而onResume類似於appDidBecomeActive;但我們可以改用onRestart的onResume作爲appDidBecomeActive因爲:

  1. 的onResume從一個活動的應用程式動作稱爲每次 另一個活動。所以我們最好避免Activity(ViewController) 具體方法。而且,onResume類似於iOS中的viewWillAppear 方法。
  2. onRestart方法僅在應用程序從後臺訪問 前景時調用,如appDidBecomeActive方法,因此更像是應用程序委託方法。

差異這兩種方法:

onRestart()方法將不被要求的非常第一次(在應用程序啓動的時間)作爲appDidBecomeAcitve被調用。應用程序啓動過程中的iOS

生命週期:(應用程序代理生命週期方法) AppDidFinishLaunchingWithOptions - >appDidBecomeActive。應用程序啓動過程中的Android

生命週期:(活動生命週期方法)
的onCreate() - >在onStart() - >的onResume()

+0

非常誤導性的答案。點擊後退按鈕將觸發前一個活動的onRestart()。根據文檔:'在你的活動已經停止,在它再次開始之前調用'。這與UIApplicationDidBecomeActive無關 – 2016-07-01 10:18:53

相關問題