Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动变暗、失去焦点和冻结-无错误消息,在首次运行后工作_Android_Android Activity_Progressdialog_Android Tabactivity - Fatal编程技术网

Android活动变暗、失去焦点和冻结-无错误消息,在首次运行后工作

Android活动变暗、失去焦点和冻结-无错误消息,在首次运行后工作,android,android-activity,progressdialog,android-tabactivity,Android,Android Activity,Progressdialog,Android Tabactivity,这就是问题所在: 活动开始,并且在onResume()中,在填充listview的后台线程中执行一些工作。这是在显示进度对话框的同时完成的,如下图所示: 这项工作完成了,并且进度对话框被告知关闭 对话框消失了-可以看到我的listview,但是活动失去了焦点-背景有点暗淡。这将迫使我按home键,并在重新打开之前强制关闭-如下例所示: 每次应用程序第一次运行时都会发生此问题。在应用程序锁定后运行总是成功的,并且问题不再明显!正如您在图片中所看到的,一切都变暗了,但是在强制关闭后,重新打开视图

这就是问题所在:

活动开始,并且在onResume()中,在填充listview的后台线程中执行一些工作。这是在显示进度对话框的同时完成的,如下图所示:

这项工作完成了,并且进度对话框被告知关闭

对话框消失了-可以看到我的listview,但是活动失去了焦点-背景有点暗淡。这将迫使我按home键,并在重新打开之前强制关闭-如下例所示:

每次应用程序第一次运行时都会发生此问题。在应用程序锁定后运行总是成功的,并且问题不再明显!正如您在图片中所看到的,一切都变暗了,但是在强制关闭后,重新打开视图的响应与我预期的一样,一切正常。logcat中没有任何东西可以帮助我诊断问题,而且所有代码似乎都正常工作

请帮忙


这里是重播列表活动部分的代码转储:-可能很难遵循-但在第一次运行时,它将执行dropbox登录,这很有效-然后执行findAllReplays()-这同样有效-最终以returnres runnable结束,导致对话框被取消-这同样有效-这就是问题似乎发生的地方…

好的,所以我最终做了以下工作


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

要保持屏幕打开,可以在活动中设置一个标志

 this.getWindow().
        addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
它会一直打开屏幕,直到当前活动出现在前台。或者,如果您在后台做一些事情,并且希望在后台工作之前、期间或之后打开屏幕,则可以使用“唤醒锁定”


虽然在我回答之前您已经解决了问题,但希望它能帮助您明确概念,以保持屏幕打开。

请提供一些代码。这似乎与您的后台工作有关,如果我的假设是,这只会触发一次,之后会发生焦点不集中的情况OK-我将提供一些活动的片段OK-添加了一个活动转储和一个简短的解释-OddJobs类只执行web服务调用-所有后台POJO工作。try
loadingList.cancel()
这会导致完全相同的行为。很高兴知道您解决了问题。但这可能不是通用情况。如果您的doinbackground任务完成,onPostExecute将始终执行