我有一个Android应用程序,它从服务器侦听套接字并以json格式检索数据并将数据保存在数据库中。资源游标适配器用于显示列表中的数据。当应用程序闲置10分钟或更长时间时,它不会响应。任何解决方案?
答案 0 :(得分:14)
ANR
。具体来说,活动中为5秒,BroadcastReceiver中为10秒,服务中为20秒。因此,为避免ANR
,您需要确保在您的UI线程中不要执行类似的操作:reading or writing files
,connecting the internet
,operating databases
等等,花费了大量的时间。所以,如果你想做上面的事情,你可以开始一个新的线程来做到这一点。具体来说,AsyncTask
ThreadHandler
等等。
我希望这会对你有所帮助。
答案 1 :(得分:1)
当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()
你需要关闭光标。
答案 2 :(得分:0)
如果应用程序无法响应用户输入,则显示ANR。根据Google文档,您不应该在UI线程上执行工作。我建议您在工作线程而不是UI线程中执行网络请求或长时间运行操作。更多this
答案 3 :(得分:0)
看起来您的数据库光标已满。从光标保存数据后,将其关闭,将其设置为null并创建一个新数据,以便不在内存中保留缓冲区。