问题标签 [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 投票
0 回答
759 浏览

android - Android:主页启动器活动仅在第一次按 HOME 时重新创建到新任务中

我想阻止用户离开我的应用程序。我正在尝试通过家庭启动器活动/应用程序来实现这一点,但我不了解 android 的行为。第一次按 HOME 总是在新任务中创建新活动,而不是将现有活动移到前台。第二次按 HOME 等时,没有任何反应。参见示例:

我有一个登录活动 (A) 和设置活动 (B)。B 从 A 打开。A 设置为启动器(LAUNCHER、DEFAULT、HOME 类别)。

  1. A 打开 B
    • 任务 T1:A -> B
  2. 另一个 A 被创建到一个新任务中(为什么?):
    • T1:A -> B
    • T2:一个
  3. A 打开 B(任务 T2)
    • T1:A -> B
    • T2:A -> B
  4. 什么都没有发生,为什么?

当 A 的launchModesingleTopsingleTaskstandard时,我会得到相同的行为。使用singleInstance只有一个 A,但 B 在 T1 中单独存在,我不希望这样。

为什么总是有新的任务被创建?所有意图标志始终设置FLAG_ACTIVITY_NEW_TASK标志。为什么安卓会这样做?

它与此处此处发布的行为相同吗?我不能使用那个解决方案,因为 android 创建了一个新任务,所以 A 将永远是根。(或者我如何检查这是第二个实例?)

我不能使用这里发布的singleInstance,因为我不希望 B 独自一人(如果 A 可见,它也是唯一的活动和任务(登录目的))。我试图通过 ActivityManager 删除所有其他任务,但对于 SDK >= 21,我的最小值是 16。getAppTasks()

我什至不能使用这个解决方案,因为我从来没有使用 FLAG_ACTIVITY_BROUGHT_TO_FRONT 标志。总是有 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 标志。

我已经尝试了很多与launchMode、clearTaskOnLaunch、noHistory 的组合......但没有成功 - 总是新任务。

知道如何解决这个问题吗?在棒棒糖上运行。谢谢你。

0 投票
1 回答
155 浏览

android - Android:需要帮助安排任务和返回堆栈

如果这听起来很愚蠢和微不足道,我很抱歉,但我坚持了很长时间。

我有 5 个活动 A、B、C、D、E。链条像这样 A->B(移动到 C 后完成)->C->D->E。由于 C,D 是相互依赖的,所以我不想松开 C,D 的任何实例,直到我一起完成它们。我想在 E 中执行此操作,这意味着我想从 E 完成 C、D、E 并移动到 A完成所有活动,然后打开 A 的新实例如果有人已经为此类问题提供了简单的解决方案,请提供解决方案。我尝试了很多东西,最接近的是当我将C的launchMode设置为“singleTask”并将D的launchMode设置为“singleInstance”并在按下后退按钮时使用intent移动到C,这样我就可以在没有完成的情况下来回移动任何活动,无论是否创建新实例对 E 都无关紧要,因此将其保持为“标准”。然后我使用意图打开 A 并添加了标志“FLAG_ACTIVITY_CLEAR_TOP”,还尝试使用 startActivityFor 结果关闭 D,因为它是一个“singleInstance”活动。

现在的问题之一是我无法理解正在创建的结构,但我认为它是这样的

现在我必须从 E 转到 A 的新实例并关闭其他所有内容。由于所有活动都具有相同的亲和力,我尝试使用 finishAffinity() 但它也没有锻炼。

另一个问题是,当您在 E 中设置结果时,不会调用 D 中的 onActivityResult 方法(根据 stackoverflow 中的一个答案,我认为这是因为 D 是单实例),但是当我按下后退按钮时,它是从 A 调用的A 或者我们可以说何时从 A 调用 finish() (我不知道为什么会发生这种情况)。所以,现在当我按下后退按钮时会出现不同类型的问题。

0 投票
0 回答
551 浏览

android - Gcm 网络管理器周期性任务

我有一个任务,它每 10 秒从服务器读取一次数据。我尝试了 gcm 网络管理器,在那里我创建了一个周期性任务并将间隔设置为 10L。但任务不是每 10 秒触发一次。连续发射的最短时间是 30 秒,尽管我提到它是 10 秒。对此的任何帮助将不胜感激。另外,请让我知道是否有任何其他最佳方法来实现它。这是我使用的代码:

仅出于测试目的,我在 MyService.class 中使用了一条日志语句。该服务仅在每 30 秒(大约)后触发。我想知道我可以为 gcm 网络管理器设置的最小时间间隔来触发周期性任务。

提前感谢大家。

0 投票
5 回答
870 浏览

android - 如何将值从一个活动发送到android中的另一个扩展活动?

我正在开发一个应用程序,其中我有一个共同的活动,即BaseActivity,我正在将它扩展到我的应用程序中的所有其他活动。我在 BaseActivity 中运行了几个 AsyncTask 以反映所有其他活动。我的查询是我需要从我的一项活动中将值传递给这个 BaseActivity,比如MainActivity

我尝试了类,接口概念,但不适合我。建议我,如何实现这一目标。如果需要我的任何参考代码,请评论它,我会发布它。

已编辑

我需要将此计数值传递给BaseActivity。我不能使用 Intent,因为我正在导航到另一个活动,比如MainActivity2

MainActivity 这是我的 AsyncTask 代码

0 投票
3 回答
564 浏览

android - Android - 从最近重新启动任务后返回 MainActivity

我有 MainActivity,我可以在其中启动相机应用程序来拍摄和上传照片。在相机应用程序中长按主页并从最近返回后,我返回相机应用程序。如何始终从最近或启动器图标单击后返回 MainActivity?

我的相机应用意图:

0 投票
1 回答
772 浏览

android - 从任务管理器滑动时,Android 后台服务在棒棒糖中停止

我在 android 应用程序中有一项服务,我想在后台连续运行,即使应用程序从任务管理器中被杀死。我当前的代码适用于棒棒糖前版本。但在棒棒糖中它不起作用(在棒棒糖中它从任务管理器停止).如何解决这个问题。

服务等级

主要活动

0 投票
1 回答
110 浏览

java - 如何清除 Android 中除前两个活动之外的所有活动?

我的应用程序的活动结构可以是以下任何一种。

案例1:A > B > B > B > D

案例2:A > B > D

案例3:A > B > B > B > C > D

Activity D 中有一个选项,当我选择它时,我想在堆栈上结束它:

A > B

理想情况下,B 是该活动的新实例。起初我以为我已经找到了我的解决方案ACTIVITY_FLAG_CLEAR_TOP,它适用于案例 2。但是,无论是案例 1 还是案例 3,它最终都会使所有“下腹部”B 活动保持原样。A > B > B > B。

搜索互联网我发现了一个潜在的解决方案,使用ACTIVITY_FLAG_CLEAR_TOPACTIVITY_FLAG_SINGLE_TOP使用它来启动活动 A 并在 onNewIntent 或 onCreate 方法中捕获额外内容以立即启动活动 B 的实例。

但是,在代码方面,这对我来说似乎相当尴尬。特别是考虑到活动 A 是一个主屏幕,应该(从直观的事物流中)只有在帐户之间切换时才能访问(从技术上讲,角色,因为它是一个游戏)。

我想到的另一个解决方法是在 A 和 B 之间插入一个加载屏幕活动,我可以“召回”并从中重新启动 B。但是,这似乎也有点迟钝,因为它是一个简单的应用程序,实际上没有任何需要加载时间的东西。此外,还有可能将 Activity B 以后的所有活动都放在一个新任务中,但这似乎更加迟钝和不必要。

TLDR:除了 A 和新活动 B 之外,还有其他方法可以清除所有堆栈吗?或者是我注定要使用解决方法的答案。

编辑:我确实需要back stack直到用户在活动 D 中选择特定选项为止。例如,如果他们只是在活动 D 或 B(或 C)活动之一中按下后退键,我确实需要它回到前一个活动(默认情况下),所以我继续完成这些活动是行不通的。

0 投票
3 回答
8912 浏览

android - 从后台显示另一个应用程序的对话框活动

假设您有一个应用程序 A 打开另一个应用程序 B(例如地图),它不受您控制(即它是一个预先存在的应用程序)。所以现在应用程序 A 在后台。假设发生了一个事件,A 想要在应用 B 的 UI 上显示一个浮动对话框(同时让应用 B 的活动在其后面可见)。这可能吗?

(对此的通常答案是显示通知,但这不是大众市场应用程序,我们正试图非常直接地引起用户的注意。)

目前,我正在尝试做这样的事情:

从应用程序 A(在后台的那个)中。

但是,当我这样做时,会在原始应用程序 A 活动和后台堆栈上的应用程序 B 活动之间插入对话框。

0 投票
1 回答
919 浏览

android - 始终重新创建具有 launchMode singleTop 或 singleTask 的 Activity

我的应用程序中的 MainActivity 在清单文件launchMode中定义了一个。singleTop每当我单击通知时,我的 MainActivity 都会重新创建,并且旧实例会被销毁。当单击通知时, MainActivity 是可见的并且在前台,所以我假设意图将传递给当前实例onNewIntent(),但这永远不会发生。这是我创建的意图:

我有时会像这样将FLAG_ACTIVITY_CLEAR_TOPand添加FLAG_ACTIVITY_SINGLE_TOP到意图中:

我也尝试过将singleTasklaunchMode 与这些标志一起使用,并且发生了相同的行为。有人可以对这种行为提供一些见解吗?

0 投票
1 回答
31 浏览

android - 我可以依靠后台 Android 进程在合理的时间内被杀死吗

我们有一个应用程序将一些配置数据保存在内存中。在应用程序启动时从服务器获取配置数据。但是,我们希望不时更新此配置(以便将来自服务器的新配置数据传播到客户端)。我们的应用程序通常不会在前台停留很长时间。

根据 Android 文档,可以杀死后台进程以释放一些内存。然而,似乎无法保证这将在合理的时间内发生(例如 4 小时)。因此,如果不需要内存,应用程序可能会永远存在。 https://developer.android.com/guide/components/processes-and-threads.html

一段时间后我们可以依靠Android杀死后台任务吗?还是我们必须建立一种机制,在应用程序运行时更新配置数据?

您能否为一方或另一方提供一些文档或有充分根据的实验?

最好的祝福