Android应用无响应(ANR)

Jyo*_*ish 2 android android-anr-dialog

我有一个Android应用程序,它从服务器监听套接字并以json格式检索数据并将数据保存在数据库中.资源游标适配器用于显示列表中的数据.当应用程序闲置10分钟或更长时间时,它不会响应.有解决方案吗

Sil*_*ght 14

ANR当主线程被阻塞一段时间时发生.具体来说,活动中为5秒,BroadcastReceiver中为10秒,服务中为20秒.所以,为了避免ANR,你需要确保你不这样做,这些在你UI线程:reading or writing files,connecting the internet,operating databases等等,这耗费了大量的时间.所以,如果你想做上面的事情,你可以开始一个新的线程来做到这一点.具体来说,AsyncTask ThreadHandler等等.

我希望这能帮到您.

  • @dmarin 如果您查看源代码,您会看到 `// 我们等待服务完成执行的时间。静态最终 int SERVICE_TIMEOUT = 20*1000; // 我们等待服务完成执行的时间。static final int SERVICE_BACKGROUND_TIMEOUT = SERVICE_TIMEOUT * 10;` 在第 90~94 行。在 `ActivityManagerService` 的第 1783~1791 行,你会看到 `mHandler.sendMessageDelayed(nmsg, ActiveServices.SERVICE_TIMEOUT);` (2认同)