使用recreate()方法和startActivity(getIntent())重新创建Activity之间的区别

Arn*_*ati 13 android android-activity

我或多或少是android编程的初学者

我的问题来自这篇文章.

据我所知,主要有两种方法可以重新启动我所在的同一个Activity:

a)Activity.recreate()[在API 11之后添加]

b)

Intent intent = getIntent();
    finish();
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这两个实际上如何工作?他们重新创建活动的过程有什么不同吗?

我相信这两个重新创建活动的方式之间肯定会有一些区别,因为我已经看到recreate()在我的活动中为视图添加了一些默认(垃圾?)值.此外,recreate()使用默认的黑色初始视图启动新活动

Abs*_*Abs 10

重新创建 - (您可以恢复活动状态)这导致与由于配置更改而创建活动时基本相同的流 - 当前实例将经历其生命周期到onDestroy(),然后在其后创建新实例.

在重新创建()方法的行为就像一个配置变化,所以你的onSaveInstanceState()和onRestoreInstanceState()方法也被称为(如果适用).

非常有趣的阅读:http: //developer.android.com/training/basics/activity-lifecycle/recreating.html

VS

完成 ActivityResult将传播回通过onActivityResult()启动您的任何人.并重新开始作为堆栈顶部的新活动

  • @MartinKonecny-文档非常具体,即调用`recreate()`与更改配置具有相同的效果:_“当前实例将在其生命周期内进入onDestroy(),然后在该实例之后创建一个新实例。” _。发生这种情况时,将调用onSaveInstanceState()**,就像配置更改时一样(除非已通过清单标志更改了默认行为)。 (2认同)