【问题标题】:Hide MainActiviy when DialogActivity startsDialogActivity 启动时隐藏 MainActiviy
【发布时间】:2017-06-03 01:01:34
【问题描述】:

我使用firebird云消息在后台接收数据,然后会出现一个对话框(以Theme.AppCompat.Dialog为样式的新Activity)。我的问题是 MainActivity 的表面每次都在后台显示。是否可以隐藏 MainActivity 而不终止它?也许有人有想法?

当我在 MainActivity 的清单中设置值时 android:noHistory="true" 我看起来不错,但通知随后在应用历史记录中。这看起来很糟糕

我的意思是当活动在后台时 MainActivity 仍然可见

【问题讨论】:

  • 通过在 style.xml 中设置背景颜色来设置样式
  • 感谢您的回复,但 MainActivity 仍然在后台打开。它应该留在后台。
  • offcourse mainactivity 将在后台运行。
  • 没有我的电脑自动取款机,但做了类似的事情(有点像一些短信应用程序生成的弹出窗口),背景是透明的。如果应用程序在后台,我的会显示在主屏幕或锁定屏幕的顶部。这就是你要找的吗?

标签: java android


【解决方案1】:

当您将 Activity 用作对话框时,您的 MainActivity 会以暂停状态保留在 Activity Stack 中。但是,即使您使 Dialog Activity 全屏,也不能保证 MainActivity 将保持活动状态。如果其他进程需要内存,操作系统可以随时终止该活动。 This is stated on the Activity reference.

您可以尝试以下替代解决方案之一:

  1. 使用DialogFragment 而不是新的活动
  2. 使用常规片段,在运行时添加片段,允许用户在对话框片段和主片段之间切换。
  3. 使用 FrameLayout,在同一 Main Activity 布局中显示/隐藏对话框 UI。

【讨论】:

  • 感谢您的回复,但我无法从 Service 类启动 DialogFragment,因为无法访问 Displaymanager。这似乎只适用于活动
  • 您之前没有提到服务类。如果您的意思是 Android 服务,那么剩下的就是 communicate between the Service and the Activity 来触发对话框的显示。
【解决方案2】:

我认为正在寻找这种方法

    /* When {@link #FLAG_DIM_BEHIND} is set, this is the amount of dimming
     * to apply.  Range is from 1.0 for completely opaque to 0.0 for no
     * dim.
     */

dialog.getWindow().getAttributes().dimAmount = 1f;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多