写在前面的话
这周主要优化了一下项目中的配音问题 解决了 上传多文件大文件Retrofit OOM问题。 原因暂时没找到,看了一些帖子说设置连接超时时间大一点就行 但是试过貌似无效。怀疑是ffmpeg执行太多操作所致, 在ffmpeg部分加上线程。从而解决了这个问题。然后项目中 添加了一些进度条展示,使用户觉得等待的时间不会过于漫长。这算是一种优化吧。
回顾一下六月份给自己定的小目标 每周写两篇总结。总的来说 数量上大致完成了 但是个人感觉质量上还远远不够。嗯 还是得 坚持学习。
Python
关于Python这周看到高级编程 正则表达式这部分。跟着例子写的时候 有几个正则表达式 。对正则表达式忘光了 又跑回去接着看正则表达式。
关于Dagger Component
之前写了一个demo 学习dagger2 + Retrofit 架构。 ONE
之前没怎么思考 Dagger 编译生成的Component部分
简单的来说:
Component 要解决的问题就是Inject的实例从哪里来,所以它承担的就是一个连接器的作用。Component需要引用到目标类的实例,Component会查找目标类中用Inject注解标注的属性,查找到相应的属性后会接着查找该属性对应的用Inject标注的构造函数(这时候就发生联系了),剩下的工作就是初始化该属性的实例并把实例进行赋值。
以官方 TasksRepositoryComponent为例,我们可以通或((ToDoApplication)getApplication()).getTasksRepositoryComponent().getTasksRepository(); 方式来创建TasksRepository。但是,更多的时候,我们还是通过Inject来实现Fields injection、Methods injection。当时很疑惑 为什么有的是在Activity中注册。而有的官方demo是在Application中.
<code>
public class TasksActivity extends AppCompatActivity {
@Inject
TasksPresenter mTasksPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create the presenter
DaggerTasksComponent.builder()
.tasksRepositoryComponent(((ToDoApplication) getApplication()).getTasksRepositoryComponent())
.tasksPresenterModule(new TasksPresenterModule(tasksFragment)).build()
.inject(this);
}
}
</code>
总的是来 不过是几种写法 一种便于全局,一种偏向于注释。后面会陆续学习。
Retrofit源码
这周刚用IntelliJ IDEACE开始大略看看Retrofit源码 具体还没有什么收获 看到Retrofit builder模式 感觉 好厉害。。
最后这周去水立方游泳了。 喝了不少水。 😀 祝大家有个愉快的周末 !
最后的妹子图
怎么可能没有妹子图 😀