如果异步线程是一个与主线程分开操作并且不干扰主线程的线程......
新的Activity
在通过startActivity(intent)
启动后是否不占用主线程?
我读过的大部分内容都表明这些都是异步的,但是有一些相互矛盾的答案,并且那些说这并不能给出令人信服的论据的人。
因此,如果有任何人清楚地知道他们为什么是同步/异步,那么我将是一个非常感激的人!
干杯
编辑:所以我从这两个好人和网上的一些东西得到的答案......将活动纳入同步/异步的混合可能会导致马的负荷。但它仍然指的是......
的原则 在调用堆栈可以继续之前,必须完成 Synchronous
个方法/命令。
Asynchronous
方法/命令(通常在线程/ AsyncTask中完成)并行继续,允许主线程执行继续。 (它可以在自己的时间返回)
startActivity(intent)
和startActivityForResult(intent)
方法是非同步的,因为它们是非阻塞的,并允许执行线程在执行相应任务时继续执行。
答案 0 :(得分:26)
startActivity(intent)
和startActivityForResult(intent)
是异步的,因为这些方法在不启动Activity的情况下立即返回。实际上,只有在当前Activity的生命周期事件结束后,它们才会安排Activity启动。
如果你有一些东西需要一些时间来完成,那么在第一个活动的onPause()
方法中,新的Activity
将很慢启动。
答案 1 :(得分:3)
当您startActivityForResult
时,您仍然执行异步调用。您的呼叫者活动被暂停,新的呼叫在另一个进程中启动(如果它在另一个用户下运行)。
但是当被调用活动终止setting a result时,您的活动将恢复,并且您将onActivityResult作为包含结果的回调调用。