Android如何重启活动

时间:2014-09-11 10:03:09

标签: java android android-activity view

在标记为重复之前仔细检查红色:

如何重启以及活动中的android术语活动。 (就像当有人按下主页按钮并返回应用程序时)。我不想重绘我的活动,因此不能调用onCreate。基本上怎么办pause -> stop -> start -> resume? (没有destroy or create

我想这样做的主要原因是,当我修改窗口标志时,它们不会立即生效,但在按下主页并返回应用程序后它们才会生效。关于确保其效果的任何其他建议都将受到欢迎。 (FLAG_SECURE是不会立即生效的标志)

我无法找到关于重新绘制完整活动的所有其他类似问题的任何内容。

2 个答案:

答案 0 :(得分:2)

当你再次开始活动时,它不太清楚......

enter image description here

(来自http://developer.android.com/reference/android/app/Activity.html

正如您所看到的,一旦您的活动停止(在onStop()之后),它可以被销毁或重新启动 - 但这取决于其他超出我们范围的活动 - 所以我们不知道上下文你开始/停止你的活动......

- >

上没有明确的答案

记住编程提示:

根据活动的复杂程度,您可能不需要实施所有生命周期方法。但是,了解每一个并实施那些确保您的应用程序按照用户期望的方式运行的方法非常重要。正确实施您的活动生命周期方法可确保您的应用在多种方面表现良好,包括:

  • 如果用户在使用您的应用时接到电话或切换到其他应用,则不会崩溃。
  • 当用户不主动使用它时,不会消耗宝贵的系统资源。 如果用户离开您的应用并稍后返回该应用,则不会失去用户的进度。
  • 当屏幕在横向和纵向之间旋转时,不会崩溃或丢失用户的进度。

(来自http://developer.android.com/training/basics/activity-lifecycle/starting.html

Killable

让你更清楚:从http://developer.android.com/reference/android/app/Activity.html查看表格,你可以看到统计数据和旗帜可用...

......那个说明:

注意" Killable"上表中的列 - 对于那些被标记为可填充的方法,在该方法返回之后,托管该活动的进程可能在任何时候被系统杀死而不执行其代码的另一行。因此,您应该使用onPause()方法将任何持久性数据(例如用户编辑)写入存储。此外,在将活动置于这样的背景状态之前调用onSaveInstanceState(Bundle)方法,允许您将活动中的任何动态实例状态保存到给定的Bundle中,以便稍后在onCreate(Bundle)中接收需要重新创建。有关流程生命周期如何与其托管的活动相关联的详细信息,请参阅流程生命周期部分。请注意,将持久数据保存在onPause()而不是onSaveInstanceState(Bundle)中非常重要,因为后者不是生命周期回调的一部分,因此不会在其文档中描述的所有情况下调用。

答案 1 :(得分:-1)

要重新启动活动,您可以执行以下操作:

Intent intent = getIntent();
finish();
startActivity(intent);