【问题标题】:any.do system wide "reminder dialog" how to?any.do 系统范围的“提醒对话框”如何?
【发布时间】:2013-09-13 18:35:42
【问题描述】:

Any.Do 样式“提醒”对话框...(是的,白色的,正在系统范围内显示); 我该怎么做?

我用半透明主题开始一个 ACTIVITY X,所以我需要用标志 “NEW_TASK” 开始它 和 "singleTask" 以便在后台没有之前的 ACTIVITY N。

现在我想做以下事情:

当在此 ACTIVITY X 上按下 主页按钮或后退按钮时,我不想再将它放在“backstack”中。就像它走了。因此,当应用再次从启动器(或任务切换器)启动时,它应该会将您带回到不同的活动(活动 N)。

它现在做了什么: 当再次从启动器中选择应用程序时,应该消失的这个特定的 ACTIVITY X(是的,我在 onPause() 中调用了 finish())回来活着......总是。

我该如何存档?

编辑: 一些代码:

<activity 
               android:name=".ActivityX"
               android:theme="@android:style/Theme.Translucent.NoTitleBar"
               android:label="@string/app_name"
               android:launchMode="singleInstance"
               android:noHistory="true"
               ></activity>

以及调用此活动 x 的意图:

Intent intent = new Intent(getApplicationContext(), ActivityX.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY);

只是一个想法: 启动一个服务而不是弹出一个对话框更好吗?因为这实际上是我想要“模拟”但系统范围内的行为......

【问题讨论】:

  • onPause 中调用finish() 进行活动
  • 我这样做。但这只是隐藏了活动。再次单击应用程序图标时,前一个不会返回。
  • 如果你按下后退按钮并且当你再次启动它时活动仍然存在,那么就会出现问题,因为后退按钮和调用finish()都弹出了backstack
  • 可能是因为“新任务”标志?

标签: java android android-activity


【解决方案1】:

当你在做 startactivity(intent) 时。在那之后做一个finish()...这将完成活动并且不再存在于堆栈中。

【讨论】:

  • 谢谢,但事实并非如此。 Finish() 不会从 backstack 中删除活动。我不想从这个开始一项新的活动。当它被暂停时,它永远不会活着回来。
【解决方案2】:

将 android:noHistory="true" 添加到 Activity。

【讨论】:

  • 是的,这就是我尝试过的。不工作。甚至在意图本身中设置一个标志:Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY
  • 你把事情复杂化了。尝试删除所有其他内容并使用此标志。
  • 我需要 NEW_TASK 标志才能摆脱以前的“活动 n”,否则它不是“系统范围的覆盖”。
  • 我们可以创建一个系统范围的覆盖窗口。看看这个测试应用程序。 github.com/commonsguy/cw-omnibus/tree/master/Tapjacking/…
  • 是的,因为它是一个透明的系统覆盖,可以捕获所有输入。您可以使其透明并包裹您的内容以不覆盖整个屏幕。
猜你喜欢
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2011-11-04
  • 2010-09-24
  • 1970-01-01
相关资源
最近更新 更多