异步任务+递归 进行初始化文件读取方法
来源:互联网 发布:mathematica软件下载 编辑:程序博客网 时间:2024/06/14 09:10
其实在普通的应用开发中,很少遇到我要说明的问题,因为我们没有那么多的本地配置文件,当然有时候我们会遇到,好吧,这样说可能看不懂,我直接说一个例子吧。
- 将要配置的信息(也就是实例化的信息保存到本地文件)在启动的时候进行读取来完成初始化
- 从网络获取,将配置信息保存到服务器,
以上两种都是保存配置文件的位置和使用手段,他们有一个共同点,就是两者都是比较耗时的操作,当然,提到耗时,每个人想到的都是异步,是的,是要用异步,这时将会出现一个问题 ,异步进行读取的消耗时间我们是不能控制的,这是异步和主线程谁先执行完成,我们是不能确定的,这时就不能完成初始化操作了,这时我们为了能确保性能,可以使用异步任务配合递归的方式来完成
异步任务配合递归的方式来完成初始化时的耗时读取
这个在Launcher 开发中有例子,递归呢,也要符合两个条件,
- 有出口
内容有变化(一般是减少使用次数)
Launcher 呢,大家都知道,他在初始化的时候可能要加载的东西可能会很多,并且要在应用刚创建的时候进行初始化,换句话就是说onCreate()中进行操作
onCreate(){..... checkForLocaleChange(); setContentView(R.layout.launcher); ....}```
private void checkForLocaleChange() {
if (sLocaleConfiguration == null) { //递归的出口条件 new AsyncTask<Void, Void, //异步任务LocaleConfiguration>() { @Override protected LocaleConfiguration doInBackground(Void... unused) { LocaleConfiguration localeConfiguration = new LocaleConfiguration(); readConfiguration(Launcher.this, localeConfiguration); return localeConfiguration; } @Override protected void onPostExecute(LocaleConfiguration result) { sLocaleConfiguration = result; checkForLocaleChange(); //递归 } }.execute(); return; } //更新配置信息 异步执行完成 并将结果重新发布到checkForLocaleChange //方法中的时候,由于sLocaleConfiguration 不再是空的,因此checkForLoca // leChange要继续后续的更新流程 updateConfigurationInfo();}```
在我们的应用开发中我们并不是要在初始化的时候做耗时操作 但是如果有,这却是是一种好方法
阅读全文
1 0
- 异步任务+递归 进行初始化文件读取方法
- 异步打开一个文件进行读取
- XMLHttpRequest进行异步数据读取
- 文件异步读取 java
- 读取文件任务一
- 递归读取xml 文件;
- Java 递归读取文件
- 利用matlab进行ROM初始化mif文件方法(转)
- Xcode进行异步任务的单元测试
- django下使用celery进行异步任务
- Android中使用SDcard进行文件的读取方法
- 读取文件进行计算
- jni进行文件读取
- Unity3d读取自定义初始化文件
- Unity3D 异步读取CSV文件
- 文件的递归读取和递归删除
- 递归读取目录及文件
- 递归读取目录及文件
- Linux最常用150个命令汇总
- UGUI的画布属性介绍
- linux内部结构
- 使用charles对app请求进行抓包,请求断点,修改请求与返回的数据,重新发送请求
- java基础
- 异步任务+递归 进行初始化文件读取方法
- Cobbler部署指南之FAQ处理篇
- Unity Shader 常见参数
- git常用命令
- 跳出循环才重新执行
- clone()方法
- 网络传输:使用 HTTPS 保护网站安全
- Java调用mysql的存储过程
- Mybatis批量操作