Avi*_*ida 5 java android android-intent
单击推送通知时,我使用类似的方法来启动我想要的意图:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
ctx.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
它的部分代码我从一个教程中获得,但我并没有真正理解同时使用的FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_SINGLE_TOP。
从文档:
FLAG_ACTIVITY_NEW_TASK(在API级别1中添加):
使用此标志时,如果现在正在为您正在启动的活动运行任务,那么将不会启动新的活动;而是,相反,当前任务将以其上次进入的状态简单地显示在屏幕的前面。
FLAG_ACTIVITY_SINGLE_TOP(在API级别4中添加):
如果设置了该活动,则如果该活动已经在历史记录堆栈的顶部运行,则不会启动该活动。
对我来说,这两个听起来很像,我的意思是,NEW_TASK确保您的活动中已经存在您的活动,那么将不会创建新任务,而是会显示旧任务(据我所知,可以在顶部显示不同的活动),SINGLE_TOP仅在活动不在堆栈顶部时才会启动活动(因此这意味着同一活动将有2个或更多实例)吗?
我的问题是:两者之间有区别吗?
AFAIK
FLAG_ACTIVITY_SINGLE_TOP不会创建一个新任务来启动自己。它总是依赖于前一个活动的任务来启动自己(同时,它会检查堆栈中是否已经有一个实例并显示它是否可用。无论哪种方式,它都不会创建新任务)
然而
FLAG_ACTIVITY_NEW_TASK 确实会创建一个新任务,除非有一个具有相同活动的任务。
我知道这有点感觉一样,但是当一个活动与启动这里的关键区别是FLAG_ACTIVITY_SINGLE_TOP对于第一次,它依赖于现有任务和FLAG_ACTIVITY_NEW_TASK创建新任务
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |