当前位置: 首页 > 知识库问答 >
问题:

startActivity(intent)和onStop

景震博
2023-03-14

我有一个问题关于start活动(意图)和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();
    }
}

但是,我想在保存下一个活动后启动它-因此我需要使用intent和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()?或者,是因为新的活动将在顶部,Android会自动调用onStop,就像现在在后台一样?

关于startActivity(intent)如何在应用程序周期中发挥作用,有很多问题我都不明白。如果有人给我指一个链接,这会很有帮助。

非常感谢。

编辑:意图不在onStop中。它在另一种方法中对应于一个按钮。一旦按钮被点击,我将需要保存数据-转到onstock-然后转到下一个活动。我怎么能那样做?

共有1个答案

田易安
2023-03-14

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

onPause()当另一个活动显示在您的活动前面时,它将始终被调用。

那应该能解决你的问题。

 类似资料:
  • 我试图在选项菜单中从主菜单调用另一个活动。当我从自己的选项菜单中调用主活动时,它将正常工作,但调用另一个意图将产生异常,应用程序将崩溃。我使用了try and catch,发现当它到达这条线时会崩溃: 下面是我的主java文件和应用程序清单文件。 } 对于manirfest: Logcat:

  • 在启动activity中找不到合适的方法是显示错误的错误是: 错误:(123,17)错误:找不到适合startActivities(Intent)方法上下文的方法。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法上下文。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法

  • 下面是我的代码位。 日志附在下面。 2021-05-12 13:40:27.167 6451-6451/Testpackage E/AndroidRuntime:致命异常:主进程:Testpackage,PID:6451 android。所容纳之物ActivityNotFoundException:未找到可处理Intent{act=android.Intent.action.VIEW dat的活动

  • 我的代码如下: 首先,我想知道第20行: 我有两个问题: A.为什么MY_MESSAGE被分配给com.example.myfirstapp.MESSAGE?B.com.example.myfirstapp.MESSAGE是什么?c.我从来没有在任何地方做过MESSAGE;这是像r.java文件中的变量一样自动制作的,还是我需要在某个地方制作它? 第二,关于第40行:intent.putExtra

  • 我相信有一些显而易见的事情,但还没有找到解决这个简单问题的办法。当用户猜测正确答案时,错误出现在试图启动另一个活动的主活动中: 错误:(85,23)未解析的引用:意图 该代码来自《Android静态编程语言开发》一书中的高/低Android应用程序。 清单对被调用的活动具有以下意图筛选器:

  • 根据Android文档,finish()的功能与“后退”按钮的功能完全相同。基本上,当我调用finish()时,会调用onStop()。 我试图重写onStateSaveInstance()以保存当前状态,但从未调用它。但是,如果通过创建新的Intent并使用startActivity()转到上一个活动,则会调用onStateSaveInstance()方法。这有什么原因吗?