【问题标题】:On Android, how long do I have to respond (and to what?) before being killed?在 Android 上,在被杀之前我必须响应(以及响应什么?)多长时间?
【发布时间】:2011-10-22 23:43:40
【问题描述】:

在 Android 上,据我了解,如果您在某个超时时间内没有响应操作系统的某些事件,它将认为您的应用程序已挂起并提示用户终止它。

所以我的第一个问题是:具体来说是什么?我猜像Activity.onPauseView.onTouchEventSurfaceHolder.Callback.surfaceCreated 等?有清单吗?还是只是来自操作系统的每个回调?

(或者它可能被实现为内部轮询某个线程消息队列的频率?详细信息?)

我的第二个问题是:超时时间是多久?

【问题讨论】:

  • 您要确保甚至不会接近 5 秒超时。如果频繁出现,1s 范围内的任何事情都会变得非常烦人。
  • @sstn:它会阻止整个 Android 用户界面吗?还是只是您自己的应用程序?
  • 可能一切都 - 至少在 onPause() 等情况下。不确定简单的按钮点击。
  • @SYLARRR:我希望获得有关如何实现 5 秒超时的更多详细信息。不过没关系。

标签: android timeout


【解决方案1】:

如果在 5 秒内没有响应,用户会收到“应用程序没有响应屏幕”。如我所见,您必须在 5 秒内响应在主线程上运行的任何内容,否则将提示用户终止您的应用程序。

更糟糕的是,如果 UI 线程被阻塞超过几秒(目前大约 5 秒),用户会看到臭名昭著的“应用程序无响应”(ANR) 对话框。

Source

【讨论】:

  • 是否可以通过编程方式更改 ANR 的超时时间?
  • 否,因为它是防止不良编程和防止用户烦躁的设计选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
相关资源
最近更新 更多