主线程上的Android IO操作
我的问题有两个:主线程上的Android IO操作,android,Android,我的问题有两个: 在安卓系统的主线程上执行IO操作是可取的还是有可能使我的应用程序崩溃 如果在主线程上执行IO操作并不理想,那么我可以使用哪些其他框架,以便在我的应用程序加载时,它可以执行一些基本IO文件读取并将值存储在变量中 IO操作永远不可取,因为获取文件等可能需要一些时间 IO操作应该使用一个单独的线程来完成,而 在安卓系统的主线程上执行IO操作是可取的还是有可能使我的应用程序崩溃 正如它在报告中所解释的那样,这是不可取的。您可能会获得糟糕的用户体验。在UI线程(~5s)上进行更长时间的操
IO操作永远不可取,因为获取文件等可能需要一些时间 IO操作应该使用一个单独的线程来完成,而 在安卓系统的主线程上执行IO操作是可取的还是有可能使我的应用程序崩溃 正如它在报告中所解释的那样,这是不可取的。您可能会获得糟糕的用户体验。在UI线程(~5s)上进行更长时间的操作将导致ANR(应用程序无响应)对话框,从而导致应用程序崩溃。此外,网络通信等IO操作将导致API立即引发异常 如果在主线程上执行IO操作并不理想,那么我可以使用哪些其他框架,以便在我的应用程序加载时,它可以执行一些基本IO文件读取并将值存储在变量中 很多,对于基本IO文件读取,您可以使用AsyncTask:
- -对于短操作-如读取文件+解析文件。您必须自己管理它的生命周期-即,如果在活动中使用,它会由于配置更改而被销毁
- -应将AsyncTask替换为更易于管理的活动内部组件。它的管理是通过框架来完成的
- -这是在线程池上执行代码的java类。你必须自己管理它的生命周期。例如,在活动中进行配置更改时
- 它不创建自己的线程,但允许您在后台执行长时间操作
- -创建自己的线程并处理队列中的任务的服务
资源
、共享参考
或甚至简单的设置内容视图(R.layout.xxxx)
执行IO调用之后,读取大文件迟早会导致ANR(应用程序无响应)错误(如果需要5秒以上的时间)但是Android上的很多东西都在幕后使用文件,比如共享首选项、资源、布局。。。如果我使用file.exists()
或file.length()?这些对UI线程也不安全吗?如果我使用file.exists()或file.length()会怎么样?