问题标签 [android-task]
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 任务
我正在尝试在一个新的(单独的)任务中使用 Main2Activity 开始一个意图(即,在最近屏幕中单独的返回堆栈和单独的实例)。我意识到应该这样做的方式是添加Intent.FLAG_ACTIVITY_NEW_TASK
和Intent.FLAG_ACTIVITY_MULTIPLE_TASK
意图标志:
但这仅在我(在清单中)将 Main2Activity 设置 android:taskAffinity
为默认值以外(即当前活动的任务关联性除外)时才有效。
问题是我希望能够多次创建具有相同活动的另一个新任务。
例子:
在 android Gmail 应用程序中,您可以多次单击“撰写”按钮,每次都会创建撰写者的“新实例”。我想实现完全相同的行为。
有什么线索吗?
非常感谢。
android - 如何让 FLAG_ACTIVITY_NEW_TASK 忽略 taskAffinity?
我正在开发的启动器应用程序中的两个按钮有问题。第一个按钮应该启动 TotalCommander 的内置文本编辑器以显示某个文本文件。第二个按钮应该启动 TotalCommander。所以我从下面的代码开始......
...但它以一种意想不到的方式起作用:
- 第一个按钮按预期打开文本编辑器。
- 然后按主页按钮按预期显示启动器。
- 然后第二个按钮按预期打开 TotalCommander。
- 现在按下后退按钮会显示文本编辑器,而不是显示启动器。
...所以更具体地说:我希望按钮使用单独的任务,以便从文本编辑器或 TotalCommander 导航回来显示启动器。(除非从 TotalCommander 打开文本编辑器,在这种情况下,应该由 TotalCommander 在其自己的任务中启动文本编辑器活动的新实例。)
所以我添加intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
到两个按钮...
...但这会导致相同的行为。FLAG_ACTIVITY_NEW_TASK
由于 TotalCommander 活动的任务相关性,我假设s 被忽略。如何让 FLAG_ACTIVITY_NEW_TASK 忽略 taskAffinity,或修改相关 TotalCommander 活动的 taskAffinity?
android - 是什么让 singleTask 活动有 2 个实例?
根据docs, singleTask 活动不能有多个实例。我的应用程序的唯一活动是 singleTask,它同时有 2 个实例。
重新创建问题的步骤
步骤1
在 Android Studio 3.3.1 中创建一个新项目,添加无活动,将其命名为 singleTaskBug,(包com.example.singletaskbug
),使用 Java 语言,最低 API 级别为 21,不支持即时应用程序。
第2步
通过编辑手动添加一个新活动,然后在⯈ ⯈AndroidManifest.xml
中创建一个新的 Java 类,命名为。app
java
com.example.singletaskbug
LauncherActivity
内容AndroidManifest.xml
:
内容LauncherActivity.java
:
第 3 步
转到Run
⯈Edit Configurations...
并在Launch Options
设置Launch:
为Specified Activity
、 和的部分中Activity:
com.example.singletaskbug.LauncherActivity
,然后单击OK
、 和Run 'app'
ShiftF10。
第4步
等到活动变得可见。现在在测试设备(在我的情况下为 API 21)上,转到设置以将此应用程序设置为默认启动器。然后按主页按钮。此时您将在 Logcat 中看到:
android - “adb shell dumpsys 活动”中的“堆栈”是什么意思?
运行adb shell dumpsys activity activities
显示当前任务及其活动。但任务按“堆栈”分组(例如堆栈#0、堆栈#1)。那些堆栈是什么意思?
下面的结果显示了一个示例。我打开了 Play 商店(任务 ID #694),然后浏览到其中的一个应用程序并触摸了开发人员的电子邮件,这会为 G-Mail(任务 ID #696)打开一个新任务。之后我点击主页按钮并通过主页启动器打开 G-Mail(任务 ID #698)
如果这些任务不相关,那么为什么它们在同一个堆栈中,而 Home Launcher 应用程序(任务 ID #693)和最近的应用程序屏幕(任务 ID #697)在不同的堆栈中?有人可以解释在相同或不同堆栈中有何不同吗?
android - Android 7 + - 堆栈 #0 与堆栈 #1
我想解决 android 中的一些多活动问题,有人向我指出了一个命令来分析当前活动的活动:据
adb shell dumpsys activity activities
我了解,Nougat 有 2 个堆栈:Stack #0
和Stack #1
. 堆栈 0 是启动程序堆栈,堆栈 1 是更通用的堆栈。这样做是为了促进多任务处理。有人可以详细说明这些堆栈的区别和用例吗?
我的情况如下:存在一个活动Activity A
(在应用程序 A 中)是Stack #0
. 这会启动一个Activity B
(在应用程序 B 中)(使用FLAG_ACTIVITY_NEW_TASK
),它在Stack #1
. 现在我正在发送一个意图Activity A
,我希望这个意图只是恢复已经存在的实例,Stack #0
但事实并非如此。这个意图导致一个新的实例Activity A
中创建Stack #1
。
我怎样才能获得我想要的行为?
android - 如何让任务调用pendingIntent
我一直在尝试将pendingIntent 作为任务的一部分传递给Activity Recognition Client,但是似乎没有调用pendingIntent。
我正在使用谷歌的活动识别客户端(https://developers.google.com/android/reference/com/google/android/gms/location/ActivityRecognitionClient)。我已经查看了示例代码(在这里找到:https ://github.com/googlesamples/android-play-location/blob/master/ActivityRecognition/app/src/main/java/com/google/android/gms/ location/sample/activityrecognition/MainActivity.java)但似乎看不到我的问题。
我的代码看起来像这样(我已经提取了部分类以使其更易于阅读):
当我运行代码时,我希望看到“作品”被打印到 Logcat,因为我从类中的onCreate()
方法记录它DetectedActivitiesIntentService
。然而,我什么也没看到。
但是,“测试”是从与任务关联的 OnSuccessListener 记录的。当我记录结果时,什么都没有出现...
java - 如何从调用谷歌服务中获取结果?
我正在尝试使用适用于 android 的 google-location 服务获取位置。
我试图从任务包中的google api中摆弄一些方法,但似乎都失败了。更准确地说,我的应用程序开始挂起。
我也尝试使用 addOnSuccessListener,但无济于事。
我知道成功侦听器在任务 locationProviderClients[0].getLastLocation() 成功完成后执行操作,但我无法从任务中获取结果。
android - 如何防止启动新活动以完成任务?
我有一个A
活动launchMode=singleTop
。B
以及具有standart
启动模式的活动。
第一种情况:我从installer
或Google Play
(不是从启动器)启动应用程序,然后B
从活动启动其他活动A
(在任务堆栈之后将是A -> B
(堆栈顶部))。如果我最小化应用程序并从启动器打开应用程序,则活动A
开始到应用程序堆栈的顶部(A -> B -> A
)。
其他情况(正确的情况):如果我从启动器(不是谷歌播放)启动应用程序,然后启动活动B
,最小化应用程序并从 laucner 打开应用程序,然后应用程序恢复以前的状态(堆栈:)A -> B
。
在第一种情况下,它是否能够防止将活动启动A
到堆栈顶部?
android - 恢复存在于不同任务中的活动,而不是在同一任务上创建新活动
我在任务 T1 中有一个活动 A。现在,我调用在新任务 T2 上打开的 Activity B(因为 B 的启动模式是“singleTask”)。现在我想再次从 B 到 A。在这种情况下,我不想要任务 T2 中的活动 A 的新实例。相反,我希望调用任务 T1 中活动 A 的现有实例。
代码片段:
从活动 A(存在于任务 T1 中):
现在,从活动 B(在任务 T2 中)
我希望打开 T1 中的 Activity A 实例,而不是在 T2 中创建新的 Activity A 实例。
欢迎任何帮助!
android - 一旦绑定到它,如何检查android服务当前正在做什么?
假设我有一个 Android 启动的服务,它执行一些任务,例如:
-服务开始
- 执行任务 A,执行任务 B,然后下载文件 1,下载文件 2,最后执行任务 C。
-服务停止
假设当服务执行任务 B 时,一个活动绑定到它。检查服务当前正在执行什么任务以更新活动 UI 的正确方法是什么?
我现在正在做的方式是在进程中为每个任务创建一个布尔标志,然后当活动绑定到服务时,它检查哪个标志为真以向活动发送正确的回调。它可以工作,但是随着任务的增加,当错误发生时它会变得更加复杂甚至更加困难。
请帮助我以有效和可靠的方式做到这一点。
谢谢!