21

如果异步线程是独立于主线程运行且不干扰主线程的线程......

newActivity启动后是否不占用主线程startActivity(intent)

我读到的大部分内容都说这些都是异步的,但是有相当多的相互矛盾的答案,而且说这句话的人并没有真正给出令人信服的论据。

因此,如果有人清楚这一点并且可以解释为什么它们是同步/异步的,我将是一个非常感激的人!

干杯

编辑:所以我从这两个好人和网上的一些东西中得出答案......

将活动带入同步/异步的混合中可能会导致大量的负载出现。但它仍然指的是...的原则

Synchronous方法/命令必须在调用堆栈继续之前完成。

Asynchronous方法/命令(通常在线程/AsyncTask 中完成)并行继续,允许执行的主线程继续。(它可以在自己的时间返回)

startActivity(intent)和方法是异步的startActivityForResult(intent),因为它们是非阻塞的,并且允许执行线程在执行相应任务的同时继续执行。

4

2 回答 2

29

startActivity(intent)并且startActivityForResult(intent)是异步的,因为这些方法在不启动 Activity 的情况下立即返回。实际上,他们安排一个 Activity 仅在当前 Activity 的生命周期事件完成后启动。

要点是,如果你有一些东西,需要一些时间才能完成,在onPause()第一个活动的方法中,新Activity的开始会很慢。

于 2012-12-17T17:54:34.653 回答
3

当您startActivityForResult仍然执行异步调用时。您的调用者活动被暂停,新的活动在另一个进程中启动(如果它在不同的用户下运行)。

但是,当被调用的活动终止设置结果时,您的活动将恢复并且您将onActivityResult作为包含结果的回调调用。

于 2012-12-20T11:45:36.387 回答