我对Android应用程序上的活动和线程之间的区别感到困惑。像独立线程这样的活动是什么?如果是这样,多线程应用程序中可以同时运行多个活动吗?
谢谢
答案 0 :(得分:4)
我相信您之前可能已阅读过What is an Activity?的文档。如果没有,那么请做。在这里,您可以阅读更多关于android中process and threads的信息。现在,回答你的问题:
活动是一个独立的主题吗?
每个活动都不是一个独立的主题。正如评论中提到的@ android.h,所有活动都在同一个UI thread上运行。
多个活动可以同时作为多线程应用程序运行吗?
如上所述,所有活动,服务,ContentProviders,BroadcastReceivers等都在UI线程上运行。话虽这么说,您可以从活动本身开始多个线程。因此,您的应用程序可以使用多个线程,但运行多个活动不会使其多线程。
关于多项活动,您可以阅读Tasks and 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
。所以这是多个活动的工作原理。
希望这会让你的概念更加清晰。
答案 1 :(得分:4)
活动是一个独立的线程吗?
是和否。具有一个Activity
的Android应用程序将具有单个进程和单个线程,但如果有多个应用程序组件,则它们通常都将使用相同的线程(除了使用自己的线程执行工作的某些Android类)。 / p>
请阅读以下内容......
如果可以,多个活动同时作为多线程应用程序运行?
Activity
仅在完全可见时才被视为“正在运行”。例如,当出现弹出窗口(例如,对话框等)时,基础Activity
仍然部分可见,但将处于“暂停”状态。如果启动了另一个Activity
并完全隐藏了前一个Activity
(无论它是您自己的应用程序还是外部应用程序的一部分),之前的Activity
将进入“已停止”状态甚至可能被销毁。
基本上,Android Activity
不允许在多线程环境中进行多任务处理。 Activity
基本上是一个UI框架,用于提供按钮,文本视图,图像等,并允许用户交互。
另见......
...还可以查看此处的{{1}}生命周期图...
答案 2 :(得分:0)
您应该了解UI Thread的概念。基本上,有一个主线程(调用活动的回调方法的线程),你可以启动其他线程。您启动的线程无法更新UI,只能更新UI线程。
在此处查看更多内容:What is the Android UiThread (UI thread)
答案 3 :(得分:0)
AS android.h已提到所有UI对象,活动在主线程上运行。但是,您仍然可以使用异步任务从另一个线程中的Web服务读取数据,这将帮助您不在后台执行任务。 希望我的回答对你有所帮助。
答案 4 :(得分:0)
acitivity是用户界面,而Thread是执行某些代码的进程工作者。 Android确实有一个控制所有用户界面(UI)的主线程,所以如果你没有指定运行你的活动的不同线程,主线程将运行你的整个UI。
答案 5 :(得分:0)
Activity是用户在使用应用程序时看到的任何ui,一个线程就是你的任务正在运行的地方..如果你想要的话,总有一个被称为主线程的线程来运行你的所有ui和应用程序中的进程为了提高执行速度,你需要创建更多线程,这样你的主线程就不会受到干扰,你的繁重任务就会在后台运行。