Android中有一种方法,相当于applicationDidBecomeActive吗?

时间:2013-04-29 01:57:53

标签: android android-activity

我首先尝试使用onStart()或onResume()。但是,使用它们有两个缺点。

1,如果我开始另一项活动并稍后解雇,请按照以下步骤进行。 (有点像模态提出了一个新的视图控制器然后解除它)

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中的方法是否与Android中的 - (void)applicationWillResignActive:(UIApplication *)应用程序完全相同

3 个答案:

答案 0 :(得分:3)

您可以使用onRestart()方法。仅当您的应用从后台进入前景时才会调用此方法。

这两种方法都有相似之处:

它类似于“Some Cases”中的appDidBecomeActive。每当你去背景,即从Activity到Home Screen,然后调用onPause()后跟onStop()方法。然后你恢复到android中的app然后onRestart()然后调用onPause()方法。

在进入主屏幕背景时iOs的生命周期:( App Delegate Life Cycle Methods) appWillEnterForeground - > appDidBecomeActive

Android中的生命周期,同时从主屏幕进入前景:(活动生命周期方法) onRestart() - >的onResume。

从上面看,onRestart似乎与appWillEnterForeground类似,而onResume类似于appDidBecomeActive;但我们可以使用onRestart而不是onResume作为appDidBecomeActive,因为:

    每次应用程序从一个活动移动到时,都会调用
  1. onResume 另一项活动。所以我们最好避免使用Activity(ViewController) 具体方法。而且,onResume类似于viewWillAppear iOS中的方法。
  2. onRestart方法仅在应用程序发布时调用 背景中的前景,如appDidBecomeActive方法,因此更像是一个app delegate方法。
  3. 这两种方法的差异:

    在调用appDidBecomeAcitve时,第一次(在App Launch时)不会调用

    onRestart()方法。

    应用启动期间iOS中的生命周期:(应用代表生命周期方法) AppDidFinishLaunchingWithOptions - > appDidBecomeActive

    Android应用启动期间的生命周期:(活动生命周期方法)
    的onCreate() - >在onStart() - > 的onResume()

答案 1 :(得分:0)

要检查用户是否已登录,您可以在android中使用sharedPreferences。这些类似于iOS中的NSUserDefaults类。用户登录后在sharedPrefs中保存布尔值,如果要再次运行登录过程,则再次检查onResume。

答案 2 :(得分: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
    }
}

这有帮助吗?我不是百分百肯定我明白你想要的东西。