问题标签 [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 - 带有 2 个带有单独 taskAffinity 的启动器图标的 Android 应用
我有带有 2 个启动器图标和 2 个不同活动的应用程序。清单文件如下:
我想MyActivity
成为安装后打开的默认屏幕,所以我使用了.category.DEFAULT
.
action.MAIN
并且category.LAUNCHER
将显示两个单独的启动器图标(1 代表MyActivity
,1 代表MySettings
)。
问题:当我打开MyActivity
时,MySettings
屏幕也被打开。我希望每个启动器图标仅打开其相应的活动。我已经使用taskAffinity
每个活动来解决问题,但它没有用。我认为要进行taskAffinity
工作,活动必须以标志开始,Intent.FLAG_ACTIVITY_NEW_TASK
在我的情况下我不能(两者都是启动活动)。
我也尝试过使用android:launchMode="singleTask"
,但也没有用。
如何使每个启动器图标仅打开其 Activity ?
更新:对不起,我意识到MyActivity
没有打开MySettings
,但似乎如此。MyActivity
没有 UI,所以它显示类似于 的空白屏幕MySettings
。taskAffinity
工作正常。我已经添加android:theme="@android:style/Theme.NoDisplay"
到MyActivity
隐藏 UI。
android - 如何从浏览器启动我的应用程序作为单独的任务
我的活动定义如下所示:
这个activity是我的app中的root activity,可以从浏览器app启动,之后,如果我点击浏览器图标,我想看到的是浏览器UI,但实际上我还是看到了我自己的app,这是不正确的.
我尝试添加android:launchMode="singleInstance"
and android:launchMode="singleTask"
,它适用于这种情况,即:我的应用程序活动作为一个新任务开始,我可以切换回浏览器,但是当我从主屏幕点击我的应用程序图标时,它总是作为一个新任务开始task,这不是我想看到的,我想在离开的时候看到最后一个Activity。
也试过android:allowTaskReparenting="true"
了,但还是不行,我相信重点是launchMode
,但是在尝试了所有4种模式之后,仍然无法弄清楚。
android - 具有 singleTask 启动模式的活动及其在后台堆栈中的位置
在关于任务和回栈的官方在线 Android指南中,我发现有一条信息自相矛盾。因此,如果有人可以帮助我解决这个问题,我将不胜感激。
首先,有以下声明:
堆栈中的 Activity 永远不会重新排列,只会从堆栈中压入和弹出——当当前 Activity 启动时将其压入堆栈,并在用户使用“后退”按钮离开时弹出。
然后描述了singleTask的启动方式,有如下语句:
系统创建一个新任务并在新任务的根部实例化活动。但是,如果活动的实例已经存在于单独的任务中,系统将通过调用其 onNewIntent() 方法将意图路由到现有实例,而不是创建新实例。
好吧,如果我理解正确的话,singleTask活动只能是它们任务的根源,因为它们是这样创建的,并且活动从不交换后堆栈中的位置。但是,这样的活动在收到对其onNewIntent()方法的调用时会如何反应?
该页面上关于此问题的另一条评论:
作为另一个示例,Android 浏览器应用程序声明 Web 浏览器活动应始终在其自己的任务中打开 - 通过在元素中指定 singleTask 启动模式。这意味着如果您的应用程序发出打开 Android 浏览器的意图,它的活动不会与您的应用程序放在同一任务中。相反,要么为浏览器启动一个新任务,要么,如果浏览器已经在后台运行了一个任务,则该任务被提出来处理新的意图。
因此,该指南指出调用singleTask活动会以某种方式将其向前推进。但是,如果该活动不在其任务之上,这怎么可能是真的呢?活动是否已恢复,或者它只是接收到对其onNewIntent()方法的调用而不向用户显示?我真的不明白。
PS:一年多前已经问过一个几乎相同的问题,但没有给出正确的答案。因此,虽然从技术上讲我的问题是重复的,但我有一种重新提出的冲动,因为它确实值得一个清晰明确的答案。
android - Android 启动模式单任务
在我的应用程序中,我有一个仪表板活动,它的启动模式是“SingleTask”我的应用程序是否有可能在没有 onCreate 的情况下进入 onNewIntent?
例如,如果用户从 Dashboard 导航到另一个活动,并且在 Dashboard 被销毁后,如果用户再次导航到仪表板会发生什么?
onCreate 会工作还是会从 onNewIntent 继续?
谢谢。
android - 具有“singleTask”启动模式的活动如何不是任务中的根活动?
这是来自 android 文档的图像:
Activity Y 具有“singleTask”启动模式,但它不是任务中的根 Activity,即 Activity X。它是如何发生的?
更新:
从文档中:
“单任务”
系统创建一个新任务并在新任务的根部实例化活动。但是,如果活动的实例已经存在于单独的任务中,系统将通过调用其 onNewIntent() 方法将意图路由到现有实例,而不是创建新实例。一次只能存在一个活动实例。注意:虽然活动在一个新任务中开始,但“后退”按钮仍将用户返回到上一个活动。
android - 从通知启动的 SingleInstance 活动,在 backPressed 上,来自应用程序
我的应用中有 3 个活动:A、B、C。A 启动 B,B 启动 C。C 的启动模式是 SingleInstance(在清单中声明)。
步骤: 1.当我在C上时,我在通知栏中显示通知,点击哪个启动同一个屏幕。2.我通过按主页将我的应用程序置于后台。3. 当我点击通知时,C 启动。
问题:当我按下 C 键时,我退出了我的应用程序。相反,我应该回到我的应用程序的早期屏幕,即 B
注意:我已将 C 声明为 singleInstance,因为我不希望在点击通知时启动多个 C 实例。我已经使用OnNewIntent()处理了相同的实例,方法是用相应的数据刷新 UI。
提前致谢!
android - android中LaunchModes的实际用例是什么?
什么是一些应用程序示例或用例(singleInstance、singleTask、singleTop)有必要的用途。即为什么有人会偏爱一种启动模式而不是另一种?到目前为止,我对它们的经验是严格的注释,因此了解它们的使用位置会有所帮助。谢谢你!
android - 我的应用程序正在创建新意图,当我启动应用程序时,我想要我的旧应用程序实例(如果正在运行)
我正在开发一个应用程序。它是一个单页秒表应用程序。因此,当我按下主页按钮并再次启动它或从正在运行的应用程序运行时,它会创建新的应用程序实例。我想要以前的当前正在运行的实例。
我用谷歌搜索了这个,发现我需要设置启动模式。所以,我做了类似下面的事情。但没有任何工作。还是一样。
还有一件事:它基于计时器。这是否意味着我的应用程序必须在后台运行?
android - 从选择器启动我的应用程序会导致重新创建我的后台活动,而不是调用 onNewIntent
我有一个带有 ACTION_SEND 意图过滤器的活动。一个文件可以从另一个应用程序共享到这个活动,比如说画廊,并在 onNewIntent 中处理。
但是,在我的三星 Galaxy S5 上,它并没有像以前那样工作(它已经在许多设备上进行了测试,并且仍然可以在一些设备上工作,所以我认为它是特定于设备的)。onCreate 总是被调用,而 onNewIntent 不是。它总是有一个单一任务的启动模式。
当我后台应用程序并返回时,不会调用 onCreate,但是当我从选择器中选择我的应用程序以便与它共享文件时,我会得到上述行为。
我尝试将 launchMode 设置为 singleTop 并设置标志 intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 关于最初启动活动的意图。我试过自行设置 Intent.FLAG_ACTIVITY_SINGLE_TOP 。我也尝试将launchMode 更改为singleInstance。当我返回活动时,savedInstanceState 似乎也为空,即使在应用程序后台运行时调用了 onSaveInstanceState。
有什么方法可以防止这种行为并调用 onNewIntent 还是设备特定的错误?
android - Android启动模式问题
虽然我在 Stack Overflow 上搜索了很长一段时间,但到目前为止还没有找到我想要的答案。
一、问题描述:
- 我有一个包含大量活动的 Android 应用程序并提交到 Google Play。发布后,我下载了它,每当打开应用程序时,它都会启动一个新任务。我需要多次单击硬件后退按钮才能终止所有任务。而在那之后,每当我再次启动该应用程序时,一切都很好。
- 另一个奇怪的是,如果我通过adb命令直接在设备上安装应用程序没有问题(adb install xxxx.apk)
2. 我做了什么:
- 最初,在代码中,我使用“标准”启动模式进行启动活动。我遇到了上述问题。
- 看了官方文档,发现“标准”模式每次都会启动一个activity的实例,所以我把启动模式改为“singtop”,但问题依旧。
3. 我不明白的地方:
- 如果我从 Google Play 安装应用程序,为什么应用程序会不断创建新任务。为什么“Singtop”启动模式在这种情况下不起作用?
- 为什么直接通过 adb 命令安装应用程序时没有问题,而从 Google Play 安装应用程序时却遇到问题。有什么不同。
4.源代码供参考:
build.gradle(模块:应用程序):
/li>AndroidManifest.xml:
/li>