android 的Service里面多次启动一个Activity只能用FLAG_ACTIVITY_NEW_TASK,那么怎么才能只启动一次呢?
具体是这样的:我有一个Service监听短信,当来短信的时候就启动一个Activity1。并且我需要在Activity2里面也启动它。怎么么样才能只启动一个?当启动的Ac...
具体是这样的:我有一个Service监听短信,当来短信的时候就启动一个Activity1。并且我需要在Activity2里面也启动它。怎么么样才能只启动一个?当启动的Activity1被用户按了home被置于后台了,怎么才能在来短信的时候唤起它,而不是在启动一个?
展开
3个回答
推荐于2017-09-19 · 知道合伙人软件行家
关注
展开全部
Activity只启动一次,需要设置Activity的启动模式。Activity启动模式有4种,分别为standard、singleTop、singleTask、singleInstance,只要设置为 singleTask就只会启动一次。
关于Activity四种启动模式的说明:
1.standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
2.singleTop 可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
3.singleTask 只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
3.singleInstance只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
关于Activity四种启动模式的说明:
1.standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
2.singleTop 可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
3.singleTask 只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
3.singleInstance只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
展开全部
其实我不太明白你说的activity1和activity2是什么关系
但是,你可以试下,使用
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)
把前面开的那个清了
但是,你可以试下,使用
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)
把前面开的那个清了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你为什么不注册一个接受短信的广播呢?
当有短信来时,在广播接收器里启动Activity1。Activity1使用singleTask模式。
当有短信来时,在广播接收器里启动Activity1。Activity1使用singleTask模式。
更多追问追答
追问
有的软件有屏蔽陌生短信电话的功能。
追答
我想那你应该知道,原生的短信应用将短信息存在哪里了,还有第三方应用是否对这些数据可读。
这个功能我也没有做过,建议你可以到CSDN或者其他比较专业一点的论坛去问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询