是否始终在startActivity之前安排完成?

时间:2018-06-12 20:13:44

标签: android android-activity

startActivity(newActivity);
finish();

假设我像上面一样调用它。两个调用都安排在调用方法结束后在UI线程上进行。但是,调度中是否有特定的顺序?是否始终在startActivity之前安排完成?反之亦然?

5 个答案:

答案 0 :(得分:6)

在活动上调用finish()时,执行onDestroy()方法,此方法可以执行以下操作:

  1. Dimiss活动正在管理的任何对话框(搜索对话框)。
  2. 关闭活动管理的所有游标。 活动将从堆栈中删除。
  3. 调用startActivity(newActivity)会在Top上创建并放置一个新的View。

    因此,如果订单是

    startActivity(newActivity);

    结束();

    然后显示第一个newActivity,旧的一个被销毁。

    但是,如果订单是

    结束();

    startActivity(newActivity);

    然后首先销毁现有活动,并创建并显示新活动。

    所以,如果我们在onDestroy()中有很多事情要做(比如存储一些数据),那么调用startActivity()然后就完成()将是一件好事。因此,顺序取决于我们先调用的内容

答案 1 :(得分:1)

两种情况都应该起作用。

答案 2 :(得分:1)

您应该始终先完成

因此,最理想的方法调用顺序是

startActivity(NewActivity);
finish();

马克·墨菲(Mark Murphy)为此写了出色的article

答案 3 :(得分:0)

无论是在开始活动()之前还是之后写完成()

,它都适用

答案 4 :(得分:0)

所以基本上调度的顺序取决于调用的顺序。如果先调用finish(),它将被添加到队列中,然后是startActivity()。反过来也是如此。根据您的实施方式,如果您在计划中需要特定订单,只需按照您希望进行计划的顺序调用函数。