【问题标题】:startActivity(intent) and onStopstartActivity(intent) 和 onStop
【发布时间】:2013-11-12 15:07:06
【问题描述】:

我有关于 startActivity(intent) 和 onStop 的问题。 Android API 建议在 onStop 中保存数据,这就是我在这里所做的:

public void onStop(){
    super.onStop();

    if(tosave)
    {
        Editor editor = sp.edit();
        editor.putInt(getString(R.string.index_of_text_color), text_color_index);
        editor.putInt(getString(R.string.index_of_background_color), background_color_index);
        editor.commit();
    }
}

但是,我想在保存后开始下一个活动 - 所以我需要使用一个意图和 startActivity(intent)。

public void click(View v){
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

我的问题是,带有两个标志的 startActivity(intent) 是否在完成应用程序时调用 onStop() 方法,还是我需要调用 finish()?我是否可以在开始一项新活动后调用 finish()?或者,是因为新的activity会在顶部,Android会自动调用onStop,因为它现在在后台?

关于 startActivity(intent) 如何与应用程序周期一起工作的问题太多了,我不明白。如果有人指出我的链接会很有帮助。

谢谢!

编辑:意图不在 onStop 中。它在另一种方法中对应于一个按钮。单击按钮后,我需要保存数据——转到 onstop——然后转到下一个活动。我怎样才能做到这一点?

【问题讨论】:

  • onStop 在您的活动完全被遮挡时调用。在那种状态下启动一个新的 Activity 似乎是个坏主意,因为通常你的 Activity 被隐藏的原因是另一个 Activity 启动了!如果您尝试这样做,我希望它会引发异常。

标签: android android-intent android-lifecycle


【解决方案1】:

您应该将状态保存在onPause(),而不是onStop(),因为在某些情况下,onStop() 永远不会被调用。保证会调用onPause()

onPause() 将始终在您的 Activity 前面显示另一个 Activity 时被调用。

这应该可以解决您的问题。

【讨论】:

  • 当我调用 startActivity(intent) 时,应用程序是否仍会调用 onpause...然后我需要 finish() 吗? onPause 也不应该处理需要太多 cpu 的东西,比如保存数据.. 但我想这会起作用
  • 你不应该在onPause() 中做太多事情。你想在那里做什么?您从哪个组件调用startActivity()?对于要明确完成的活动,您需要致电 finish()。我认为您需要阅读有关活动生命周期的更多信息。请更完整地解释您的问题并提供更多代码。
  • 我没有对onPause() 做任何事情。如上所述,startActivity(intent) 从 xml 中的 android:onClick 调用到方法 click。不知道是否需要在click方法中输入finish()。 Intent 设置为一旦另一个打开,应用程序中就不会留下任何堆栈,所以我不知道是否需要调用finish()
  • 如果Intent 正在从堆栈中清除活动,那么它将为您调用活动上的finish()。你不需要这样做。
  • 如果这是在同一任务中打开活动,则无需使用Intent.FLAG_ACTIVITY_NEW_TASK
猜你喜欢
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多