Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有人能解释一下startActivity(意图)和startActivityForResult(意图)是如何异步的吗?_Android_Multithreading_Asynchronous_Android Activity_Synchronous - Fatal编程技术网

Android 有人能解释一下startActivity(意图)和startActivityForResult(意图)是如何异步的吗?

Android 有人能解释一下startActivity(意图)和startActivityForResult(意图)是如何异步的吗?,android,multithreading,asynchronous,android-activity,synchronous,Android,Multithreading,Asynchronous,Android Activity,Synchronous,如果异步线程是一个独立于主线程运行且不干扰主线程的线程 新的活动在通过startActivity(intent)启动后是否没有占用主线程 我在这篇文章中读到的大部分内容都说这两者都是异步的,但是有相当多的相互矛盾的答案,说这句话的人并没有给出令人信服的论据 因此,如果有人能清楚地理解这一点,并能解释为什么它们是同步/异步的,我将非常感激 干杯 编辑:所以我从这两个好人和一些网上的东西中得到了答案 将活动引入同步/异步的混合中可能会导致大量的马匹。但它仍然是指……的原则 Synchronous方法

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

新的
活动
在通过
startActivity(intent)
启动后是否没有占用主线程

我在这篇文章中读到的大部分内容都说这两者都是异步的,但是有相当多的相互矛盾的答案,说这句话的人并没有给出令人信服的论据

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

干杯

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

将活动引入同步/异步的混合中可能会导致大量的马匹。但它仍然是指……的原则

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

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

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

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


如果您有需要一些时间才能完成的任务,那么在第一个活动的
onPause()
方法中,新的
活动的启动速度会很慢。

当您
startActivityForResult
时,您仍然执行异步调用。调用方活动将被挂起,新进程将在另一个进程中启动(如果它在其他用户下运行)


但是,当被调用的活动终止时,您的活动将继续,您将作为包含结果的回调被调用。

不完全如此。startActivity计划在稍后某个时间在UI线程上运行新活动。它是异步的,因为它不会立即启动,方法会立即返回。啊,谢谢!谢谢你的帮助!如果你想创造一个答案,我会接受它的完美和紧凑的答案!也可能是startActivity(Intent)本身调用了onPause()。我在这里推测,但从您的答案来看,异步性并不适用。实际上我要检查一下这个呼叫是否是同步的。