问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android 如何调用 底下的 activity 到前台 我不想新建

发布网友 发布时间:2022-05-05 09:26

我来回答

3个回答

热心网友 时间:2022-06-27 06:35

要达到这个需求,可以设置activity的启动模式为singleTask或者singleInstance

activity一共有4中启动模式

standard
默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

例如:
若有一个Activity名为A1, 上面有一个按钮可跳转到A1。那么如果点击按钮,便会新启一个Activity A1叠在刚才的A1之上,再点击,又会再新启一个在它之上……
点back键会依照栈顺序依次退出。

singleTop
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

例如:
若有两个Activity名为B1,B2,两个Activity内容功能完全相同,都有两个按钮可以跳到B1或者B2,唯一不同的是B1为standard,B2为singleTop。
若我意图打开的顺序为B1->B2->B2,则实际打开的顺序为B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法)
若意图打开的顺序为B1->B2->B1->B2,则实际打开的顺序与意图的一致,为B1->B2->B1->B2。

singleTask
只有一个实例。在同一个应用程序中启动的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task*存,也就是说,如果在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

例如:
若应用程序中有三个Activity,C1,C2,C3,三个Activity可互相启动,其中C2为singleTask模式,那么,无论在这个程序中如何点击启动,如:C1->C2->C3->C2->C3->C1-C2,C1,C3可能存在多个实例,但是C2只会存在一个,并且这三个Activity都在同一个task里面。
但是C1->C2->C3->C2->C3->C1-C2,这样的操作过程实际应该是如下这样的,因为singleTask会把task中在其之上的其它Activity destory掉。
操作:C1->C2 C1->C2->C3 C1->C2->C3->C2 C1->C2->C3->C2->C3->C1 C1->C2->C3->C2->C3->C1-C2
实际:C1->C2 C1->C2->C3 C1->C2 C1->C2->C3->C1 C1->C2

若是别的应用程序打开C2,则会新启一个task。
如别的应用Other中有一个activity,taskId为200,从它打开C2,则C2的taskIdI不会为200,例如C2的taskId为201,那么再从C2打开C1、C3,则C2、C3的taskId仍为201。
注意:如果此时点击home,然后再打开Other,发现这时显示的肯定会是Other应用中的内容,而不会是应用中的C1 C2 C3中的其中一个。

singleInstance
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

例如:
程序有三个ActivityD1,D2,D3,三个Activity可互相启动,其中D2为singleInstance模式。那么程序从D1开始运行,假设D1的taskId为200,那么从D1启动D2时,D2会新启动一个task,即D2与D1不在一个task中运行。假设D2的taskId为201,再从D2启动D3时,D3的taskId为200,也就是说它被压到了D1启动的任务栈中。

若是在别的应用程序打开D2,假设Other的taskId为200,打开D2,D2会新建一个task运行,假设它的taskId为201,那么如果这时再从D2启动D1或者D3,则又会再创建一个task,因此,若操作步骤为other->D2->D1,这过程就涉及到了3个task了。

热心网友 时间:2022-06-27 06:35

可以在manifest.xml中为Activity设置android:launchMode,
启动模式有以下几种:
standard:默认启动模式,每次激活Activity时都会创建Activity,并放入任务栈中
singleTop:如果该Activity实例在任务栈的顶部,就重用该实例对象,否则就创建新的实例并放入栈顶
singleTask:如果在栈中已经有该Activity实例,就重用该实例对象(会回调Activity中的onNewIntent方法)会将该实例放置栈顶,并将它上面的实例移除
singleInstance:在一个新栈中创建Activity实例,并让多个应用共享该栈中的该Activity实例,一旦该模式的Activity实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈的实例。

热心网友 时间:2022-06-27 06:36

给activity设置flag。追问可以具体点吗?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
枸杞子如何吃养肾呢? 淘宝商家如何报名多件多折玩法?玩法说明 淘宝怎么设置满减优惠券活动?有什么技巧? 淘宝满减活动是商家支付吗?淘宝如何设置满减活动? 淘宝满减算的是原价还是打折价?如何设置满减活动? 家和万事兴里的宋香怀的是谁的孩子 你好:HP380g6加3T硬盘, p410i阵列卡识别硬盘仅为 0GB,确认加入阵列出错... ...G6服务器开机时出现黑底白字的Boot failed 提示界面,寻求高手指教... ...提示slot 0 HP Smart Arry P4101 controller ...ML150G6 的服务器,开机时报slot 4 hp smart array p410 controller是... 谁能解释一下什么叫看门狗 activiti 有taskid怎么获取activityimpl 摩尔勇士登录时显示:在任务总表里找不到taskID=20的信息 SQL 多对多查询 jbpm 完成任务时传人变量,completeTask(taskid,map),代表啥意思 jbpm4.3中有没有办法启动一个流程实例后直接获取到taskId 南宁学开挖掘机学校在哪里,广西挖掘机培训学校 QQ熊的任务栏都成taskid=“数字”。怎么办? android每个应用都有一个堆栈task来存放启动的Activity实例我不能理taskid在实际开发中的作用是什么? 四年级春游计划作文 taskid文件怎么打开 查询离当前时间最近的不同taskid的信息 怎样由流程的taskID获取流程表单数据 手机迅雷下载电影出现taskid TaskId的翻译是:什么意思 地藏菩萨为什么不能拜?民间为何误称地藏王菩萨不能拜? “地藏王菩萨”是不是又叫做“幽冥教主” 九幽主宰是谁?孙悟空大闹地府真的是凭运气吗? 耕兮葛根粉属于哪一种类型的啊? 美菱冰箱 保鲜盒下面有许多水 c语言中 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID )是什么意思, c语言中MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID )是什么意思? 刘德华曾被困东北,赵本山一个电话刘涌就放人,他背后的势力有多大? 刘勇和赵本山什么关系 刘德华当年在东北被打一巴掌,此事为何一直真假难辨? 赵本山后台有多硬 水有多深,刘德华的挨打的事,是他解决的吗? 当年打了刘德华一巴掌的刘涌,下场是怎样的? 赵本山与刘涌关系 刘涌打刘德华是真的吗? 美的新出的禅意净水器好不好?在611京东直播视频上看到的颜值好高啊 美的净水器连接饮水器的线怎样拔掉? MRO121-4美的反渗透饮水机2个半月RO膜滤芯堵了正常么 腋毛和腿毛能随便去刮吗? 腿毛可以刮吗,会不会越刮越多? 腿毛能不能刮啊会不会越刮越粗越刮越 男生腿毛到底要不要刮? 腿毛能不能刮啊,会不会越刮越粗越刮越硬 考博报名信息简表上“考生所在单位人事部门意见”怎么填写 研究生政审表里“考生所在单位政审意见”一栏 自己写还是学校写 临汾房价为什么现在一直涨价