gcl*_*cl1 5 android timer amazon-s3 timertask android-asynctask
我有一个Android应用程序使用计时器每5-10秒调用一次AsyncTask(使用java.util.Timer和java.util.TimerTask).AsyncTask从Amazon AWS S3数据库获取图像数据,并为主UI活动加载ImageView.
这工作正常一两个小时,但后来我得到一个神秘的错误消息,应用程序被杀死.错误消息来自"Looper"并说:
Could not create epoll instance. errno=24
Run Code Online (Sandbox Code Playgroud)
要么
Could not create wake pipe
Run Code Online (Sandbox Code Playgroud)
在网上搜索似乎表明问题可能与文件描述符有关(太多的打开文件描述符?).我已经浏览了代码,但没有看到任何文件,流或连接未关闭的地方.
当应用程序被杀死时,logcat会从AndroidRuntime发出一条消息:
FATAL EXCEPTION: main
Run Code Online (Sandbox Code Playgroud)
有没有人知道这些消息,或如何解决?谢谢!
小智 -1
当我使用警报太快地触发任务时,我的代码中也遇到了同样的错误。
我通过更改代码来修复它,以便仅将其添加到警报中,以便在方法的平均运行时间之后再次运行(加上一点额外的时间以防万一)。如果您添加任务的速度比任务完成执行的速度快,那么您最终将填满 Looper,从而引发错误。
根据我的理解,本质上 Looper 就是一个由线程运行的事物队列。
| 归档时间: |
|
| 查看次数: |
3683 次 |
| 最近记录: |