【问题标题】:android app touch unrensponsiveness安卓应用触摸不响应
【发布时间】:2013-04-30 18:54:38
【问题描述】:

我开发了一个应用程序,它会在几个小时内非常密集地使用,进行大量 Web 服务调用,使用大量异步任务并在 sqlite 数据库上执行大量操作。问题是显示器绝对随机变暗,就好像它进入了省电模式(电池充电时也会发生这种情况)并且用户界面根本没有响应(没有写入为按钮单击编写的日志)。如果我单击主页按钮,手机可以正常工作,并且每个应用程序都可以正常工作。如果我回到我的应用程序,显示屏会再次变暗。我真的不知道这种行为的原因,我真的希望你们中的一些人能帮助我,因为我的老板想要一个解释,因为客户想要一个答案。

编辑:我注意到当问题发生时,它只是在解锁屏幕之后,所以它应该与应用程序恢复有关,但我真的不知道是什么导致了这种行为。

【问题讨论】:

  • 在我看来你只需要获取一个唤醒锁来防止设备屏幕在不活动后超时。
  • “不活动后屏幕超时”到底是什么意思?
  • 如果您打开屏幕并让您的设备静置片刻而不做任何其他操作,屏幕会变暗,然后最终在某个时候关闭。需要多长时间是用户设置。如果您在onStart() 中获得了唤醒锁,然后在onStop() 中释放它,它将防止设备在您的应用运行时“进入睡眠状态”。
  • 我的问题不是屏幕超时,这是每部手机的正常行为,而是显示仅在我的应用程序上变暗的事实,导致我的应用程序(仅我的应用程序)完全触摸无响应,这意味着不可能单击所有内容。唯一的解决方案是杀死应用程序并重新启动它
  • 您在 OnResume 中有任何登录吗?它被调用了吗?如果您切换到其他应用程序并返回怎么办?那么屏幕会变得没有反应吗?

标签: android brightness screen-brightness


【解决方案1】:

似乎某些操作可能会阻塞主 UI 线程并且应用程序进入无响应状态。检查是否在 UI 线程中完成了任何此类密集操作。

【讨论】:

  • 如果我在 UI 中做太多工作是错误的(但我不认为,我对此非常小心),我不应该收到 ANR 消息吗?因为当问题发生时,即使我等待了很多分钟,也不会显示 ANR 消息
【解决方案2】:

正如 jaibatrik 所说,这可能是由于在 UI 线程中而不是在后台线程、AsyncTasks 等中做太多工作造成的。实现这一点的一种不太明显的方法是,如果所有工作都在后台正确完成线程(某种类型),但 UI 线程操作正在等待后台线程操作的结果。

【讨论】:

    【解决方案3】:

    您可以像这样防止显示变暗。 ll.setKeepScreenOn(true);

    您应该处理 onresume()、onpause() 和 co。 也许您在后台任务或服务中创建了内存泄漏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多