完成是否总是安排在开始活动之前?


startActivity(newActivity);
finish();

假设我像上面这样称呼它。这两个调用都计划在调用方法结束后在 UI 线程上发生。但是,调度中是否有特定的顺序?完成是否总是安排在开始活动之前?反之亦然?

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

  1. 忽略活动正在管理的任何对话框(搜索对话框(。
  2. 关闭活动正在管理的任何游标。 并且活动将从堆栈中删除。

调用 startActivity(newActivity( 会创建并将新视图放在顶部。

因此,如果顺序是

startActivity(newActivity);
finish();

然后显示第一个新活动,并删除旧活动。

但是,如果顺序是

finish();
startActivity(newActivity);

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

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

你应该总是在完成之前开始

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

startActivity(NewActivity);
finish();

马克·墨菲(Mark Murphy(为此写了一篇出色的文章。

无论您在 start activity(( 之前还是之后写入 finish((,它都可以在这两种情况下工作

所以基本上调度的顺序取决于调用的顺序。如果你先调用 finish((,它将被添加到队列中,然后是 startActivity((。反之亦然。根据实现的方式,如果需要调度中的特定顺序,只需按希望调度发生的顺序调用函数即可。

两种情况都应该有效。

最新更新