问题标签 [launchmode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 我应该如何在 AndroidManifest.xml 中定义 launchMode - 使用 PhoneGap 和 JQM
我正在努力将我的应用程序限制为单个实例。目前,如果用户按下主屏幕退出应用程序,然后在外面做一些事情并再次点击应用程序的图标,它会启动应用程序的第二个实例。
这是我的完整清单文件:
它是一个单一的活动应用程序(基本上没有定义活动)。在 JQM 主页面上,我有类似以下条目的内容:
有人可以告诉我我的清单是否正确以及我是否应该使用
还是应该像其他东西一样
或者
提前致谢。
android - 了解 android:launchMode
我对 Android 中不同的活动启动模式感到非常困惑。我知道它与活动堆栈有关,这对我来说也不是很清楚。我希望通过一个简单的用例对每个启动模式进行简短的解释。
android - 当应用程序在运行时被覆盖时,Android 应用程序启动行为发生了变化
应用程序启动行为让我很复杂!在我的应用程序在运行时被覆盖以升级后,重新启动行为出现问题。
通常,当我单击其图标以恢复时,它会显示上次运行的活动,因为它已被主页键停止。这符合我的预期,并且所有活动都在标准启动模式中调用。
那里没有问题,但问题就在这里。如果我在它仍在运行时运行相同的 apk 以重新安装或升级它,则应用程序始终以具有 android.intent.category.LAUNCHER 属性的活动 A 启动,直到我终止应用程序时才会显示最后一个活动 B任务管理器,然后重新启动。
我没有这种行为,我不确定当它被 Play 商店升级时会发生同样的问题。
满足我发现的情况的顺序如下
- 安装应用程序(应用程序应至少有 2 个活动,一个作为启动器,另一个用于移动)
- 使用应用程序图标启动应用程序
- LAUNCHER 活动 A 显示
- 转到活动 B
- 按主页键
- 再次使用应用程序图标启动应用程序
应用程序使用 Activity B <------------------------ 检查点启动!没关系。
按主页键
- 再次安装相同版本或更高版本的应用程序
- 使用应用程序图标启动应用程序
- 应用程序通过 Activity A 启动
- 转到活动 B
- 按主页键
- 使用应用程序图标启动应用程序
应用程序使用 Activity A <-------------------------- 检查点启动!有事吗。
杀死应用程序
- 使用应用程序图标启动应用程序
- 应用程序通过 Activity A 启动
- 转到活动 B
- 按主页键
- 使用应用程序图标启动应用程序
- 应用程序使用 Activity B <------------------------- 检查点启动!问题消失了。
我想我在这件事上遇到了更多问题,例如静态对象问题。所以请让我知道为什么会发生这种情况。
谢谢。
android - 为什么按下“主页”键时其他活动正在破坏。?
有两个活动ActivityA
,ActivityB
两个都是做的singleTask
。这里ActivityB属于类别HOME
,并且设置为始终。我从on启动ActivityA,它按预期启动ActivityA,但是当按下HOME KEY(即ActivityB)时,ActivityA被破坏。
可能的原因是什么?如何阻止ActivityA被破坏?通过保持这两种活动。BroadcastReceiver
ACTION_BOOT_COMPLETED
singleTask
这是广播接收器:
清单文件如下:
android - 标记为“SingleTask”的活动提前
我正在尝试围绕 Android 的 Activity 启动模式的不同选项(请参阅文档:Tasks and Back Stack
根据文档,启动标记为“singleTask”的活动时:
“......相反,要么为浏览器启动一个新任务,要么,如果浏览器已经在后台运行了一个任务,则该任务被提出来处理新的意图。”
根据描述 singleTask 的方式,要么创建一个新任务,要么,如果该活动已经存在于某个其他任务中,则该任务被提出。
如果浏览器活动的实例(例如)已经存在于我的应用活动的同一任务(堆栈)中(但不在前台),会发生什么?它是如何提出来的?这在文档中没有描述。
android - Android:具有多个意图过滤器的 SingleTop 行为
我正在努力解决 SingleTop 活动的以下奇怪行为。
我在该活动中定义了一些意图过滤器:
此代码应启动活动:
在 DashboardActivity 的 onResume 中,我检查了相应的操作:
但是当我运行这段代码时,我总是得到android.intent.action.MAIN
动作。如果我删除singleTop
启动模式,它会启动一个新活动,但会传递正确的意图。我必须使用相同的活动实例,所以singleTop
,singleTask
或者singleInstance
必须完成这项工作。但我不知道这里出了什么问题。帮助!
android - android活动顺序,只需要当前活动的一个实例,而不是清除堆栈
单独的 singleTask 和 singleInstance 不是答案。
我在堆栈中有活动 ... n, n+1, n+2
n+2
可以打开的元素n+1
这会创建堆栈
... n, n+1, n+2, n+1
我希望它创建堆栈
... n, n+2, n+1
, wheren+1
被移到栈顶
singleTask 创建这个堆栈
... n, n+1
和 singleInstance 创建这个堆栈
n+1
以前的所有活动都已关闭。
我都不想要。
我可以使用任何启动模式吗?
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
只是使该活动不会从头开始再次加载,但不会清除历史记录中的重复活动,也许有我可以使用的标志组合?或者我可以在活动堆栈的索引中找到该活动,如果它不是最近的活动,则将其删除?
android - 从其他应用程序启动的android活动导致onResume时出现问题
我有两个活动,一个是MainActivity(启动活动),另一个是MaskActivity。如果我从其他应用程序启动我的应用程序,并从 MainActivity 启动 MaskActivity(现在 MaskActivity 在 MainActivity 之上),当我按下手机上的主页按钮并重新进入我的应用程序时会出现问题,一个新的 MainActivity 被启动并放在上面MaskActivity 和旧的 MainActivity,这不是我想要的。
但是,如果我从程序列表(而不是从其他应用程序)启动我的应用程序,事情就会如我所愿,当重新进入我的应用程序时,不会启动新的 MainActivity 并且 MaskActivity 位于 MainActivity 之上。
我的MainActivity 的launchMode 是“singleTop”,不知道是不是这个问题。只需将其更改为“singleInstance”,否则其他人无法解决问题。当更改为“SingleInstance”时,它不会启动新的 MainActivity,但会将 MainActivity 置于顶部。但是,如果在程序暂停之前 MaskActivity 位于 MainActivity 的顶部,我希望 MaskActivity 在程序恢复时保持在顶部。
有任何想法吗?
android - SplashScreen 的 Acitivity SingleTask 行为
在我的应用程序中,我有:
-SplashScreen (SSc) 准备应用程序(启动服务等) -MainActivity (MA) 应用程序中处理大多数操作的最相关部分 - 以及一些其他不相关的活动
对于我的应用程序,我希望具有像 launchMode singleTask 这样的行为,以便我的应用程序始终作为新任务启动,即使通过 SMS/EMail 应用程序中的链接单击打开也是如此。最好只有一个我的活动实例,因为它们都是可连续导航的。
但是,当我将 SSc 作为 singleTask 启动时,它是堆栈的根目录并导航到 MainActivity,按 home,再次单击 Launcher 图标,应用程序将完全重新启动。所以 SSc 再次显示,依此类推。在这种情况下,我希望将 MainActivty 带到最前面。
我的愿望是:launcherclick -> SSc -> MA -> HOME -> launcherclick -> 将 MA 放在前面 -> HOME-> 从最近重新启动 -> 将 MA 放在前面
单击具有相同实例的链接-> SSc / MA(是否是首次启动)
在我的应用程序中,拥有多个实例是没有意义的,因为后台服务一次只处理一个 MainActivity,因为它经常轮询数据只是为了看到的“事物”。
您对实现这一目标有什么建议吗?
我的第一个想法是 LauncherActivity 与 launchMode singletask 没有布局来将意图路由到其他活动(很可能是 singleTop !?,因为它只在一个任务中),例如:
清单 xml:
android - android 4.4.X:taskAffinity & launchmode 与 Activity 生命周期
我开发了一个简单的应用程序,它演示了我注意到的 Android 4.4.X 设备上的一些奇怪行为。
假设我想要有 2 个“主要”活动,其中第一个活动说“你好”(通过启动“HelloActivity”),它每第二次被恢复,第二个活动已经android:launchMode="singleTask" android:taskAffinity=".MyAffinity"
定义。第二个是由第一个开始的。
我的代码
清单非常简单:
MainActivity在按钮单击时启动 AffinityTestActivity 并记录其生命周期。它还会在每秒钟恢复一次时启动 HelloActivity:
AffinityTestActivity在按钮单击时调用 finish() 并记录其生命周期:
HelloActivity实际上与 AffinityTestActivity 相同 - 它只有调用 finish() 和 printlns 的按钮来记录其生命周期。
测试场景
- 启动 MainActivity。
- 启动 AffinityTestActivity。
- 完成 AffinityTestActivity(当 AffinityTestActivity 完成时,MainActivity 恢复并且 HelloActivity 启动)。
- 分析输出。
日志
Android 4.4.2 和 4.4.3:(在 Nexus 7 II 和三星 Galaxy S5 上测试)如您所见,日志以 HelloActivity 的 onPause 结束,这没有意义(HelloActivity 在第 3 步中显示在顶部)。AffinityTestActivity 也不会被破坏, MainActivity 也不会暂停。
较旧的 Android 版本(<4.4.2,在 2.3.5.、4.1.2 和 4.2.1 设备上测试,4.0.3 模拟器)按预期工作 - 在 onResume 和 AffinityTestActivity 被销毁后,HelloActivity 不会暂停:
我的问题
- 为什么我的 HelloActivity 在 Android 4.4.X 设备上启动并显示在顶部后立即暂停?
- 我怎样才能避免它并强制应用程序具有“正常”的活动生命周期,就像旧的 Android 版本(<4.4.2)一样?
我开发的应用程序要复杂得多,并且适用于其活动的生命周期,这种行为违反了我的应用程序的功能。
非常感谢你!