我有一个非常分层的应用程序(活动类似于联赛>球队>位置>球员),所以我让每个活动singleTop,以保持导航明智和防止重复的实例。
现在我正在制作我的第二个应用程序,我看到它建议将我的应用程序声明为singleTask,以防止重复的实例。有人能帮我解释一下每种方法的优点吗?
我的新应用程序只是一个有3个片段的活动,然后我可能会添加一个设置活动,或者一个FAQ。
编辑:我刚刚意识到singleTask并没有像我想的那样阻止我的应用程序的重复实例。现在寻找正确的方法来处理这件事..。
发布于 2014-09-10 21:16:53
我认为您对singleTop和singleTask的定义有点不正确。SingleTop可以生成一个重复的实例。让我们用你的例子,联赛>球队>位置>球员。如果玩家屏幕上有一个按钮可以带你进入联盟屏幕,它将变成联赛>球队>位置>球员>联赛。
而singleTask保证只能存在活动的一个实例。
发布于 2016-02-19 17:41:55
安卓活动launchMode
四种模式..。
默认模式是“标准”。
这些模式可分为两组。标准和singleTop出现在一边,singleTask和singleTop出现在另一方。
标准和singleTop之间的主要区别是在标准中,每当出现标准活动的新意图时,就会创建一个新的实例。对于singleTop,也会创建一个新实例,但是活动的一个实例已经在堆栈的顶部,它不会创建一个新实例。
实际上,当我们从服务器下载应用程序并从服务器启动并从服务器本身打开应用程序时,问题就来了。启动应用程序后,按“主页”按钮。然后单击所有程序并从主屏幕中选择应用程序的图标。然后将在标准的情况下创建另一个活动,但在singleTop中,不会创建新的实例。
"singleTask“和"singleInstance”模式也有一个不同之处:
"singleTask“活动允许其他活动成为其任务的一部分。它是活动堆栈的根源,但其他活动(必然是“标准”和"singleTop“活动)可以启动到相同的任务中。
另一方面,"singleInstance“活动不允许其他活动成为其任务的一部分。这是任务中唯一的活动。如果它启动了另一个活动,则将该活动分配给一个不同的任务--就好像FLAG_ACTIVITY_NEW_TASK在意图中一样。
http://smartandroidians.blogspot.in/2010/04/activity-launch-mode-in-android.html
发布于 2015-07-18 20:36:27
我在这里找到了答案:http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode
"singleTop":
与“标准”不同的是,如果活动实例已经存在于当前任务的顶部,并将系统路由到此活动,则不会创建新实例,因为它将触发onNewIntent()方法,而不是创建新对象。让我们以Twitter-oauth集成为例。
"singleTask":
将始终创建一个新任务,并将一个新实例作为根实例推送到任务中。但是,如果在任何任务中存在任何活动实例,则系统通过onNewIntent()方法调用将意图路由到该活动实例。在这种模式下,活动实例可以推送到相同的任务中。如果用户单击singleTask活动中的回键,系统将将用户返回到前面的活动。
https://stackoverflow.com/questions/25773928
复制相似问题