2016 - 2024

感恩一路有你

recyclerview和listview区别 请教高人,能说下activity四种启动模式的应用场景吗?

浏览量:3094 时间:2021-03-13 18:03:58 作者:admin

请教高人,能说下activity四种启动模式的应用场景吗?

应用程序运行时,将打开一个线程,并在该线程中运行一个任务堆栈。创建活动实例时,它将被放入任务堆栈中。活动启动模式设置为AndroidManifest.xml文件文件,通过配置活动的属性android:启动模式=“”设置。

1. 标准模式(默认)

我们直接创建的活动就是此模式的活动。这种模式下活动的特点是:只要创建一个活动实例,一旦激活该活动,就会将新创建的实例添加到任务栈中,当退出该活动时,就会销毁任务栈中的实例。

2. Singletop mode

此模式将考虑要激活的活动实例是否位于任务堆栈的顶部。如果它位于堆栈的顶部,则不需要重新创建新实例,并且将重用现有实例,否则将在任务堆栈中创建新实例。

3. Singletask mode

如果任务堆栈中存在该模式的活动实例,则删除堆栈中实例上方的所有活动实例,调用实例的newinstance()方法重用该活动,使实例位于堆栈顶部,否则将创建一个新的活动实例。

4. Singleinstance mode

在任务堆栈中创建此模式的活动实例时,只要该实例仍在任务堆栈中,即只要该类型的活动被激活,则通过调用该实例的newinstance()方法,该活动将被重用。此时,将使用相同的活动实例,它将位于任务堆栈的顶部。此模式通常用于加载速度慢、性能消耗大的活动,这些活动不需要每次都重新创建。

singleTop和singleTask有什么区别呢?

singleTop singleTop与standard的唯一区别是,当singleTop的活动位于堆栈顶部时,启动另一个活动不会创建新活动,而是会重用它。例如,a是标准的,B是singletop,/ABAB是任务堆栈,start:a表示启动活动,初始堆栈是/a/a开始:B/AB开始:B/AB开始:A/ABA开始:A/ABAA开始:B/ABAAB开始:B/ABAAB就这样。Singletask和singleinstance可以分为另一种启动模式,这必然导致任务栈的变化。singletask和singleinstance的区别在于singleinstance所在的任务堆栈只能有其活动。设a为标准,B为单任务,C为标准/a开始:B/B开始:C/BC开始:A/BCA开始:B/B上面。

AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?

使用asynctask的场景是执行一些耗时的操作,在耗时的操作完成后更新主线程,或者在操作期间更新主线程的UI。缺陷:asynctask维护一个长度为128的线程池,可以同时执行5个工作线程,并且有一个缓冲队列。当线程池中有128个线程且缓冲区队列已满时,如果此时将任务提交给线程,则会引发rejectedexecutionexception。解决方案:使用控制线程处理asynctask的调用,判断线程池是否已满。如果已满,线程将休眠。否则,它将请求asynctask继续处理。

singleTop和singleTask有什么区别?

Singletop要求,如果在创建意图时在堆栈顶部有要创建的活动实例,则该意图将被发送到实例而不是新实例。(请注意,它位于堆栈的顶部。创建一个没有堆栈顶部的新实例!)

单任务模式:当意图到达并且需要创建单任务模式的活动时,系统将检查堆栈中是否有该活动的实例。如果有的话,直接把意图发给它。

recyclerview和listview区别 android的四种启动模式 activity启动模式使用场景

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。