startActivity(newActivity);
finish();
假设我像上面这样称呼它。这两个调用都计划在调用方法结束后在 UI 线程上发生。但是,调度中是否有特定的顺序?完成是否总是安排在开始活动之前?反之亦然?
在活动上调用 finish(( 时,执行方法 onDestroy(( 此方法可以执行以下操作:
- 忽略活动正在管理的任何对话框(搜索对话框(。
- 关闭活动正在管理的任何游标。 并且活动将从堆栈中删除。
调用 startActivity(newActivity( 会创建并将新视图放在顶部。
因此,如果顺序是
startActivity(newActivity);
finish();
然后显示第一个新活动,并删除旧活动。
但是,如果顺序是
finish();
startActivity(newActivity);
然后首先销毁现有活动,并创建并显示新活动。
因此,如果我们在onDestroy(((比如存储一些数据(中有很多事情要做,那么调用startActivity((然后完成((将是一件好事。因此,顺序取决于我们首先调用的内容。
你应该总是在完成之前开始
因此,最理想的方法调用顺序是,
startActivity(NewActivity);
finish();
马克·墨菲(Mark Murphy(为此写了一篇出色的文章。
无论您在 start activity(( 之前还是之后写入 finish((,它都可以在这两种情况下工作
所以基本上调度的顺序取决于调用的顺序。如果你先调用 finish((,它将被添加到队列中,然后是 startActivity((。反之亦然。根据实现的方式,如果需要调度中的特定顺序,只需按希望调度发生的顺序调用函数即可。
两种情况都应该有效。