当前位置: 首页 > 知识库问答 >
问题:

Android:恢复单任务活动

乌修筠
2023-03-14

我有一个端口上带有UDP套接字的活动。如果我按下Home按钮,活动进入后台,将调用OnPause()和OnStop()方法。现在,当我收到一些UDP数据包时,我想恢复我的活动。阅读其他帖子,我明白我必须:

  1. 将活动声明为android:launchMode=“singleTask”(或singleInstance
  2. 然后,当我想恢复活动时:
Intent intent = new Intent(this.getApplicationContext(), myActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

这个解决方案对我不起作用。调用startActivity(intent)不会在前台显示我的活动,也不会调用onResume()

以下标志可以完成任务,但我不想清除任务并重新启动新任务。

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

共有1个答案

芮雪风
2023-03-14

为了将您自己的任务放到前台,您需要在非活动上下文中调用startActivity(),例如:

getApplicationContext().startActivity(intent);

此外,您不需要使用任何特殊的启动模式singleTasksingleInstance)即可实现此功能。

这是Android4.4中修复的Androidbug。因为这个问题来自2014年,我假设OP看到了这个问题。

请参阅如何从后台和注释线程以编程方式恢复Android活动。

 类似资料:
  • 我有一个包含3个活动的应用程序。 我有主要活动。这将调用第二个活动,然后调用第三个活动。我想在不进入 onCreate 的情况下返回到主要活动。 这是第三个活动的代码:

  • resume-task 命令用于恢复处于 Paused 状态的数据迁移任务,通常用于在人为处理完造成迁移任务暂停的故障后手动恢复迁移任务。 help resume-task resume a specified paused task Usage: dmctl resume-task [-s source ...] <task-name | task-file> [flags] Flags:

  • 问题内容: 我在应用程序的状态栏中有一条通知: 这样做的问题是,当您从应用程序中按下主页按钮(将其推到后台)然后在从状态栏访问的列表中的通知上按下时,它将启动活动的新副本。我要做的就是恢复应用程序(例如,长按主屏幕按钮并按应用程序图标上的)。有没有一种创建意图的方法? 问题答案: 我已通过将我的活动更改为androidManifest.xml文件来解决了此问题。 此属性的默认值为,它允许运行任意数

  • 据我所知,Camunda提供了两种将Java代码与服务任务集成的方法: 1.)声明一个实现JavaDelegate接口的Spring-Bean(该方法将一个DelegateExecution作为参数)。这个方法允许我存储任意多个结果变量,但我看不到定义映射process-variable->input-variable的选项。 2.)声明一个通用的Spring bean可由camunda访问,并定

  • 为了在重新创建活动后(例如在屏幕方向更改后)恢复活动的状态,我在SaveInstanceState()和onRestoreInstanceState()上实现了。保存/恢复int、double等简单信息很简单,但保存/恢复Timer等对象又如何呢?

  • 情况: 比如说,我目前正在开展应用程序活动A。 过了一段时间,我按下了“主页”按钮。应用程序A进入后台 现在,我开始使用另一个应用程序B——例如youtube等。 在应用程序A中发生了一些事情(不管在这种情况下发生了什么,比方说计时器完成了计算时间),目前它被最小化到后台 事件发生时,应用程序A活动会自动从后台恢复 问题: 如何完成第5步?基本上,我需要知道如何以编程方式从后台恢复应用程序。 我试