问题标签 [taskaffinity]
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 - 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)一样?
我开发的应用程序要复杂得多,并且适用于其活动的生命周期,这种行为违反了我的应用程序的功能。
非常感谢你!
android - 以编程方式恢复子活动
长话短说,我正在为 Amazon Kindle开发一个多活动应用程序。Kindle 有一个有点异国情调的启动器,它不支持(正确)中的多个LAUNCHER
活动manifest
,所以如果您在子活动中,请转到主屏幕,然后再次按下应用程序图标,子活动被杀死并且主要活动重新启动。
我有 2 个活动:ACTIVITY_PLAY 和 ACTIVITY_DESIGNER。典型的会话从 ACTIVITY_PLAY 开始,然后用户可能会去 ACTIVITY_DESIGNER 做一些工作。此活动由 ACTIVITY_PLAY 实例化。如果他/她离开应用程序片刻(即检查邮件)然后尝试返回将导致 PLAY_MODE 启动。
为了解决这个问题,我创建了一个“启动器”活动(参见下面的源代码),它现在是唯一的应用程序入口点。此活动决定是否启动 ACTIVITY_PLAY 或 ACTIVITY_DESIGN 取决于我从这些活动的“onResume”更改的静态值:收到的最新 onResume 是用户正在处理的最后一个活动。
我的问题是,现在当我在启动器中选择应用程序图标时,它会启动正确的活动,但会重新启动它,即使所有涉及的活动都有android:launchmode = singleTask
. 并且所有涉及的活动都有相同的android:taskAffinity
。
有任何想法吗?用相同的 taskAffinity 声明 3 个活动(启动器/游戏/设计)是否正确?这不应该工作吗?
linux - 包装的任务集有一个“?” 标记,不知道它是如何介绍的
我正在通过 popen 从 python 运行命令。在多核系统上,我有一个函数将根据系统的利用率返回字符串“/usr/bin/taskset -c <>”。然后,我将字符串附加到系统命令,然后再将其发送到 popen。
根据我的观察,任务集包装器运行正常,系统命令被观察到包装在来自“ps -elf”的任务集命令中
我不确定“?”是什么?意味着,在从 linux 控制台手动执行命令时,我没有观察到
我通过 popen 发出命令
我有一个函数可以决定系统是否是多核的,如果它是多核的,它将返回字符串“sudo /usr/bin/taskset -c”
后续命令是 tpcdump,所以它将是
我在 Ubuntu 14.04 上运行,如果这意味着什么......
bash - 命令的交换性质
我需要问这个问题只是为了仔细检查答案。
命令的顺序重要吗?例如:
是这个命令吗
等于
?
我需要知道任务集后面的所有命令是否具有相同的 CPU 亲和性,或者只是紧随其后的命令。
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。
java - 如何在 Android 中更改任务亲和性?
我的应用程序中有一个活动 (A) 可以从其他应用程序 (B) 调用
如果从 B 调用 A,则在最近的任务中有一个 B 的实例和一个 A 的实例。我希望 A 显示为 B 任务的一部分。
我发现通过向taskAffinity
两个活动清单文件添加相同的内容,它可以按我的意愿工作。但我无法访问 B。
那么,我如何找到任务 B 的亲和力并将任务 A 的亲和力更改为它?或者,还有更好的方法?
android - 完成所有活动,但保留第一个
该应用程序具有以下流程:
1)首页->活动A->活动B->活动C->活动A->活动B->活动C->等。
2)首页->活动C->活动B->活动C->活动A->活动B->活动C->等。
3)首页->活动D->活动B->活动C->活动A->活动B->活动C->等。
Activity B 有一个按钮,必须关闭除 Home 和第一个 Activity 之外的所有 Activity。最好的方法是什么?
如果我给 A、B 和 C 相同的 taskAffinity 并使用 finishAffinity() 那么所有活动都将关闭。
android - Android:给定应用程序上下文,如何知道哪个启动器图标/活动启动了应用程序?
我创建了一个库,当您添加到您的应用程序时会添加第二个启动器图标(它将用于调试网络),该库可以使用其上下文或活动从应用程序初始化,我想知道如果应用程序是从第二个启动器图标或另一个启动器启动的,则在我的库中。
我的第二个发射器还有一件事不同taskAfinity
。
该库在这里也是开源的:https ://github.com/shehabic/sherlock