3

所以这就是问题所在:

活动开始 - 在 onResume() 中,在填充列表视图的后台线程中做了一些工作。这是在显示进度对话框时完成的,如下图所示:

在后台调用 Web 服务时加载对话框

该工作完成 - 进度对话框被告知 .dismiss();

对话框消失了-可以看到我的列表视图,但是活动失去了焦点-并且有点暗淡到背景中。这迫使我按回家,并在重新打开之前强制关闭 - 根据此示例:

在进度对话框上调用dismiss后应用程序锁定

每次应用程序第一次运行时都会出现此问题。在应用程序锁定始终成功之后运行并且问题再也不会出现!正如您在图片中看到的 - 一切都变暗了 - 但是在强制关闭后,重新打开视图会像我预期的那样响应一切正常。logcat 中没有任何内容可以帮助我诊断问题 - 所有代码似乎都可以正常运行。

请帮忙!

重播列表活动部分的代码转储在这里:http ://pastebin.com/YG59VFPu - 可能很难遵循 - 但在第一次运行时,它会进行一个保管箱登录,这很有效 - 然后它会做 findAllReplays( ) - 这也有效 - 最终以 returnres runnable 结束,导致对话框被关闭 - 这也有效 - 这似乎是问题发生的地方......

4

2 回答 2

3

好的所以最终我做了以下事情。

我创建了一个 AsyncTask - 它在预执行时以相同的方式创建了对话框,在 doinbackground 结束时它关闭了对话框,因为我的 onPostExecute 从不执行 - 但是在 doinbackground 结束时关闭对话框。这就是我正在使用的,它基本上解决了我的问题。

于 2012-07-01T12:13:14.383 回答
0

要保持屏幕亮起,您可以在活动中设置标志

 this.getWindow().
        addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

它将保持屏幕开启,直到当前活动处于前台。或者,如果您在后台执行某些操作并希望在后台工作之前、期间或之后保持屏幕开启,则可以使用唤醒锁定。

电源管理器保持屏幕打开。永远不要忘记提及适当的权限

尽管您在我回答之前解决了您的问题,但希望它可以帮助您清除概念以保持屏幕开启。

于 2012-07-06T13:36:23.777 回答