我正在开发一款复杂的Android应用,发现了一个奇怪的问题。 当我启动活动以显示对话框时,会出现问题。
我试图搜索类似的问题(“家庭活动阻止的Android活动”等)但找不到。
由于我的应用程序的复杂性,我仍然找不到原因的最小表示 - 下面的描述部分不能用于重现问题。我认为这与问题密切相关。真正的原因可能是不同子系统之间的相互作用。
活动由意图标志= FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP
的服务启动,这确保它将是启动时的最顶层活动。在onCreate
方法中,活动将其窗口标志设置为FLAG_SHOW_WHEN_LOCKED | FLAG_FULLSCREEN | FLAG_TURN_SCREEN_ON | FLAG_DISMISS_KEYGUARD
,这确保即使屏幕被锁定,活动仍将显示。该对话框也已构建并显示在活动的onCreate
方法中。
使用以下步骤在具有屏幕图案锁的Android手机上测试该应用程序:
启动应用。按主页按钮返回主页活动。从最近的应用列表中删除该应用。
按电源按钮关闭并锁定屏幕。
询问(通过GCM,具体)启动活动一次的服务。然后成功显示对话框。
请勿单击对话框上的任何按钮。再次锁定屏幕。
请求服务再次启动活动。这次对话框也会显示但会立即消失,显示屏幕图案锁定。
解锁模式锁定并显示奇怪的内容:对话框现在显示在主页活动后面。该对话框不响应触摸事件。它就像一个壁纸。
这个问题似乎只影响了一些版本。它发生在Galaxy Nexus(Android 4.4.2)上,但没有出现在Galaxy Tab 3(Android 4.1)上。
答案 0 :(得分:0)
意外地通过删除行来解决问题
android:theme="@android:style/Theme.Dialog"
包含来自AndroidManifest.xml
的对话框的活动。
我不知道为什么它可以通过这种方式解决。