2013-04-29 80 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

相关问题