6

我对 android 应用程序上的活动和线程之间的区别感到困惑。那么一个活动是否像一个独立的线程?如果是这样,多个活动可以在多线程应用程序中同时运行吗?

谢谢

4

7 回答 7

5

我相信您可能已经阅读过什么是活动?前。如果没有,那么请做。在这里,您可以阅读更多关于android中的进程和线程的信息。现在,回答你的问题:

一个活动是一个独立的线程吗?

每个活动都不是一个独立的线程。正如评论中提到的@android.h,所有活动都在同一个UI 线程上运行。

多个活动可以作为多线程应用程序同时运行吗?

如上所述,所有活动、服务、内容提供者、广播接收者等都在 UI 线程上运行。话虽如此,您可以从一个活动本身中启动多个线程。因此,您的应用程序可以使用多个线程,但运行多个活动不会使其成为多线程。

关于多项活动,您可能会阅读Tasks 和 Back Stack文档。它强调了多项活动的概念:

An application usually consists of multiple activities that are loosely bound to each other. Typically, one activity in an application is specified as the "main" activity, which is presented to the user when launching the application for the first time. Each activity can then start another activity in order to perform different actions. Each time a new activity starts, the previous activity is stopped, but the system preserves the activity in a stack (the "back stack"). When a new activity starts, it is pushed onto the back stack and takes user focus. The back stack abides to the basic "last in, first out" stack mechanism, so, when the user is done with the current activity and presses the Back button, it is popped from the stack (and destroyed) and the previous activity resumes. 所以这就是多活动的工作原理。

希望这使您的概念更加清晰。

于 2013-06-27T01:35:01.077 回答
5

那么一个活动是一个独立的线程吗?

是和不是。具有一个的 Android 应用程序Activity将具有单个进程和单个线程,但如果有多个应用程序组件,它们通常都将使用相同的线程(除了某些使用自己的线程工作的 Android 类)。

请阅读以下...

进程和线程

如果是这样,多个活动可以作为多线程应用程序同时运行吗?

AnActivity只有在完全可见时才被认为是“正在运行”。例如,当弹出窗口(例如,对话框等)出现时,底层证券Activity仍然部分可见,但将处于“暂停”状态。如果另一个Activity启动并完全隐藏了前一个(无论它是您自己的应用程序的一部分还是外部应用程序的一部分),则前一个Activity将进入“停止”状态,甚至可能被销毁。

基本上,AndroidActivity不是在多线程环境中允许多任务处理的主力。AnActivity基本上是一个提供按钮、文本视图、图像等并允许用户交互的 UI 框架。

也可以看看...

应用基础

...并在Activity这里查看生命周期图...

活动生命周期

于 2013-06-27T01:35:27.143 回答
1

您应该了解 UI 线程的概念。基本上,有一个主线程(调用活动的回调方法的那个),您可以启动其他线程。您启动的线程无法更新 UI,只能更新 UI 线程。

在此处查看更多信息:什么是 Android UiThread(UI 线程)

于 2013-06-27T01:28:46.697 回答
0

正如 android.h 提到的所有 UI 对象,活动在主线程上运行。但是您仍然可以使用异步任务从另一个线程中的 Web 服务读取数据,这将帮助您不在后台执行任务。希望我的回答对你有所帮助。

于 2013-06-27T01:43:17.093 回答
0

活动是用户界面,而线程是执行某些代码的进程工作者。Android 确实有一个主线程来控制所有的用户界面(UI),所以如果你没有指定一个不同的线程来运行你的活动,主线程将运行你的整个 UI。

于 2013-06-27T01:55:38.073 回答
0

Activity代表单屏,有UI,其他手线程没有UI,用于执行后台操作

于 2018-05-11T09:17:04.677 回答
0

Activity 是用户在使用应用程序时看到的任何 ui,线程是您的任务运行的地方.. 如果您想增加应用程序中的所有 ui 和进程,总有一个线程称为主线程来运行应用程序中的所有 ui 和进程。执行速度你需要创建更多线程,这样你的主线程就不会受到干扰,你的繁重任务在后台运行。

于 2015-10-05T10:41:28.823 回答