Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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应用程序无响应(ANR)_Android_Android Anr Dialog - Fatal编程技术网

Android应用程序无响应(ANR)

Android应用程序无响应(ANR),android,android-anr-dialog,Android,Android Anr Dialog,我有一个android应用程序,它监听服务器的套接字,以json格式检索数据,并将数据保存在数据库中。资源游标适配器用于在列表中显示数据。当应用程序空闲10分钟或更长时间时,它不会重新发送。有解决方案吗?如果应用程序无法响应用户输入,则会显示ANR。根据Google文档,您不应在UI线程上执行该工作。我建议您在工作线程而不是UI线程中执行网络请求或长时间运行的操作。更多情况下,当Android检测到系统无法响应用户输入超过几秒钟时,会发生ANR CursorWindow﹕ Window is f

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

如果应用程序无法响应用户输入,则会显示ANR。根据Google文档,您不应在UI线程上执行该工作。我建议您在工作线程而不是UI线程中执行网络请求或长时间运行的操作。更多情况下,当Android检测到系统无法响应用户输入超过几秒钟时,会发生ANR

CursorWindow﹕ Window is full: requested allocation 396488 bytes,
free space 285853 bytes, window size 2097152 bytes
04-01 05:32:34.328    1598-1607/com.inxed W/CursorWrapperInner﹕ 
Cursor finalized without prior close()

您需要关闭光标。

ANR
在主线程被阻塞一段时间时发生。具体来说,在活动中为5秒,在广播接收器中为10秒,在服务中为20秒。因此,为了避免ANR,您需要确保在UI线程中不会执行类似的操作:
读取或写入文件
连接internet
操作数据库
等等,这些操作会花费大量时间。所以,如果你想做上面的事情,你可以开始一个新的线程来做。具体来说,
AsyncTask
ThreadHandler
等等


我希望这对你有帮助

您的DB光标似乎已满。保存光标中的数据后,关闭光标,将其设置为null,然后创建一个新的光标,以便在内存中不保留任何缓冲区


你的代码和日志在哪里???我编辑了问题以附加日志。信息不准确和杂项。在主要活动的简历上,我将两个异步任务称为backHi,我记得在Android文档中读到了类似的内容,但我再也找不到了,你能给我发送链接吗?@dmarin链接在这里:谢谢,但它不再提到20秒的时间service@dmarin如果您在源代码中查找,您将看到
//我们等待服务完成执行的时间。静态最终整型服务\u超时=20*1000;//我们等待服务完成执行的时间。静态最终整型服务\u后台\u超时=服务\u超时*10在第90~94行。在
ActivityManagerService
的第1783~1791行中,您将看到
mHandler.sendmagesdelayed(nmsg,ActiveServices.SERVICE\u TIMEOUT)