Android中是否新开一个activity就是新建了一个线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中是否新开一个activity就是新建了一个线程相关的知识,希望对你有一定的参考价值。

android中是不是新开一个activity就是新建了一个线程

不是的,Android中所有的Activity都是在一个线程中,也就是我们所说的主线程(UI线程)。另外Activity 和 线程本身是两个跨度很大的概念。 参考技术A

    答案是否定的,几乎所有的GUI程序(android,javaswing,winform)都会使用一个线程来完成界面的显示。这个线程叫做主线程,或者event dispacture thread(edt ,事件派发线程)。这个概念在所有的GUI程序中都存在。

    所有耗时的、复杂的操作都不应该在edt中运行,这样会导致程序占用主线程资源,而导致界面卡顿。在android4之上,你会注意到有一个异步任务类(asycTask)这个类就是为了解决在edt之外执行耗时操作的问题。

参考技术B 不是的,APP中的所有Activity是共用一个主线程的 参考技术C 一个handler 可以处理 所在线程 收到的消息,至于多个Activity 是否存在多个UI线程,你可以log输出每个Activity的threadId,都为同一个值,那就是 共用一个UI线程.

Android中activity的四个启动模式

activity的四个启动方式分别是standard、singletop、singletask、singleinstance。第一个其实就是只要新打开活动就会新建一个实例。第二个顾名思义返回栈的顶部只会有一个活动即栈顶的活动启动自己时不会新建实例还是栈顶活动本身。第三个则避免了活动的重复建立的问题一个活动建立后以后再有其他活动打开这个活动会把一开始建立的活动放到栈顶而不会新建立实例了。最后一个会新建一个独立于launch的栈以供其他活动的使用。但同时四个启动方式混杂时back之后要注意不同的栈之间的关系判断back之后回到的是哪个活动。推荐看https://blog.csdn.net/zivensonice/article/details/51569502。https://blog.csdn.net/mr_jingfu/article/details/79077613。

以上是关于Android中是否新开一个activity就是新建了一个线程的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]

Android经典完美退出方法

Android——Activity以及Service的启动方式

android开发问题

Android--Activity四种启动模式

Android总结篇系列:Activity启动模式(lauchMode)