问题标签 [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.

0 投票
1 回答
438 浏览

android - 使用相同的根活动打开多个 android 任务

我正在尝试在一个新的(单独的)任务中使用 Main2Activity 开始一个意图(即,在最近屏幕中单独的返回堆栈和单独的实例)。我意识到应该这样做的方式是添加Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_MULTIPLE_TASK意图标志:

但这仅在我(在清单中)将 Main2Activity 设置 android:taskAffinity为默认值以外(即当前活动的任务关联性除外)时才有效。

问题是我希望能够多次创建具有相同活动的另一个新任务。

例子:

在 android Gmail 应用程序中,您可以多次单击“撰写”按钮,每次都会创建撰写者的“新实例”。我想实现完全相同的行为。

有什么线索吗?

非常感谢。

0 投票
0 回答
264 浏览

android - 如何让 FLAG_ACTIVITY_NEW_TASK 忽略 taskAffinity?

我正在开发的启动器应用程序中的两个按钮有问题。第一个按钮应该启动 TotalCommander 的内置文本编辑器以显示某个文本文件。第二个按钮应该启动 TotalCommander。所以我从下面的代码开始......

...但它以一种意想不到的方式起作用:

  1. 第一个按钮按预期打开文本编辑器。
  2. 然后按主页按钮按预期显示启动器。
  3. 然后第二个按钮按预期打开 TotalCommander。
  4. 现在按下后退按钮会显示文本编辑器,而不是显示启动器

...所以更具体地说:我希望按钮使用单独的任务,以便从文本编辑器或 TotalCommander 导航回来显示启动器。(除非从 TotalCommander 打开文本编辑器,在这种情况下,应该由 TotalCommander 在其自己的任务中启动文本编辑器活动的新实例。)

所以我添加intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)到两个按钮...

...但这会导致相同的行为。FLAG_ACTIVITY_NEW_TASK由于 TotalCommander 活动的任务相关性,我假设s 被忽略。如何让 FLAG_ACTIVITY_NEW_TASK 忽略 taskAffinity,或修改相关 TotalCommander 活动的 taskAffinity?

0 投票
1 回答
847 浏览

android - 是什么让 singleTask 活动有 2 个实例?

根据docs, singleTask 活动不能有多个实例。我的应用程序的唯一活动是 singleTask,它同时有 2 个实例。

重新创建问题的步骤

步骤1

在 Android Studio 3.3.1 中创建一个新项目,添加无活动,将其命名为 singleTaskBug,(包com.example.singletaskbug),使用 Java 语言,最低 API 级别为 21,不支持即时应用程序。

第2步

通过编辑手动添加一个新活动,然后在⯈ ⯈AndroidManifest.xml中创建一个新的 Java 类,命名为。appjavacom.example.singletaskbugLauncherActivity

内容AndroidManifest.xml

内容LauncherActivity.java

第 3 步

转到RunEdit Configurations...并在Launch Options设置Launch:Specified Activity、 和的部分中Activity: com.example.singletaskbug.LauncherActivity,然后单击OK、 和Run 'app' ShiftF10

第4步

等到活动变得可见。现在在测试设备(在我的情况下为 API 21)上,转到设置以将此应用程序设置为默认启动器。然后按主页按钮。此时您将在 Logcat 中看到:

0 投票
0 回答
399 浏览

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)在不同的堆栈中?有人可以解释在相同或不同堆栈中有何不同吗?

0 投票
0 回答
64 浏览

android - Android 7 + - 堆栈 #0 与堆栈 #1

我想解决 android 中的一些多活动问题,有人向我指出了一个命令来分析当前活动的活动:据

adb shell dumpsys activity activities

我了解,Nougat 有 2 个堆栈:Stack #0Stack #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

我怎样才能获得我想要的行为?

0 投票
1 回答
59 浏览

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 记录的。当我记录结果时,什么都没有出现...

0 投票
0 回答
53 浏览

java - 如何从调用谷歌服务中获取结果?

我正在尝试使用适用于 android 的 google-location 服务获取位置。

我试图从任务包中的google api中摆弄一些方法,但似乎都失败了。更准确地说,我的应用程序开始挂起。

我也尝试使用 addOnSuccessListener,但无济于事。

我知道成功侦听器在任务 locationProviderClients[0].getLastLocation() 成功完成后执行操作,但我无法从任务中获取结果。

0 投票
1 回答
180 浏览

android - 如何防止启动新活动以完成任务?

我有一个A活动launchMode=singleTopB以及具有standart启动模式的活动。

第一种情况:我从installerGoogle Play(不是从启动器)启动应用程序,然后B从活动启动其他活动A(在任务堆栈之后将是A -> B(堆栈顶部))。如果我最小化应用程序并从启动器打开应用程序,则活动A开始到应用程序堆栈的顶部(A -> B -> A)。

其他情况(正确的情况):如果我从启动器(不是谷歌播放)启动应用程序,然后启动活动B,最小化应用程序并从 laucner 打开应用程序,然后应用程序恢复以前的状态(堆栈:)A -> B

在第一种情况下,它是否能够防止将活动启动A到堆栈顶部?

0 投票
0 回答
46 浏览

android - 恢复存在于不同任务中的活动,而不是在同一任务上创建新活动

我在任务 T1 中有一个活动 A。现在,我调用在新任务 T2 上打开的 Activity B(因为 B 的启动模式是“singleTask”)。现在我想再次从 B 到 A。在这种情况下,我不想要任务 T2 中的活动 A 的新实例。相反,我希望调用任务 T1 中活动 A 的现有实例。

代码片段:

从活动 A(存在于任务 T1 中):

现在,从活动 B(在任务 T2 中)

我希望打开 T1 中的 Activity A 实例,而不是在 T2 中创建新的 Activity A 实例。

欢迎任何帮助!

0 投票
0 回答
56 浏览

android - 一旦绑定到它,如何检查android服务当前正在做什么?

假设我有一个 Android 启动的服务,它执行一些任务,例如:

-服务开始

- 执行任务 A,执行任务 B,然后下载文件 1,下载文件 2,最后执行任务 C。

-服务停止

假设当服务执行任务 B 时,一个活动绑定到它。检查服务当前正在执行什么任务以更新活动 UI 的正确方法是什么?

我现在正在做的方式是在进程中为每个任务创建一个布尔标志,然后当活动绑定到服务时,它检查哪个标志为真以向活动发送正确的回调。它可以工作,但是随着任务的增加,当错误发生时它会变得更加复杂甚至更加困难。

请帮助我以有效和可靠的方式做到这一点。

谢谢!