Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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组件和线程,运行哪个线程?_Android - Fatal编程技术网

android组件和线程,运行哪个线程?

android组件和线程,运行哪个线程?,android,Android,android没有“main”方法,所以android应用程序的所有组件,如活动、内容提供商,都可以由android系统运行,以响应其他应用程序的请求 因此,假设在几乎某个时候,两个应用程序请求一个应用程序的两个组件 我的问题是,这些组件是在一个线程中运行还是在不同的线程中运行?组件不在线程上运行。对象不在线程上运行。方法在线程上运行 组件的生命周期方法(如活动的onCreate())在主应用程序线程上运行。操作系统和应用程序之间的大多数交互都在主线程(也称为UI线程)上运行。 应用程序同时接收

android没有“main”方法,所以android应用程序的所有组件,如活动、内容提供商,都可以由android系统运行,以响应其他应用程序的请求

因此,假设在几乎某个时候,两个应用程序请求一个应用程序的两个组件


我的问题是,这些组件是在一个线程中运行还是在不同的线程中运行?

组件不在线程上运行。对象不在线程上运行。方法在线程上运行


组件的生命周期方法(如活动的
onCreate()
)在主应用程序线程上运行。

操作系统和应用程序之间的大多数交互都在主线程(也称为UI线程)上运行。 应用程序同时接收多少“请求”并不重要,所有“请求”都由主线程中的一个循环器处理

您可以从应用程序中的任何线程将任务添加到此主线程循环器:

Runnable task = buildYourTask();
new Handler(Looper.getMainLooper()).post(task);
[更新]
这是来自:

系统不会为的每个实例创建单独的线程 组成部分。在同一进程中运行的所有组件都是 在UI线程中实例化,对每个组件的系统调用 从该线程发送。因此,响应 系统回调(如onKeyDown()以报告用户操作或 生命周期回调方法)始终在进程的UI线程中运行


你的意思是意图将是隐式消息队列中的一条低级消息?@lovespring我不知道意图是否将一条或多条消息排队,但是的,它将以这种方式处理。如果在任何生命周期方法中放置断点,则可以在调用堆栈中看到它。