问题1.每个View都需要对应一个Presenter,导致类太多解决策略1:抽取基类BaseView和BasePresenter,相同功能的presenter实现代码复用。同...
问题1.每个View都需要对应一个Presenter,导致类太多解决策略1:抽取基类BaseView和BasePresenter,相同功能的presenter实现代码复用。同...
AsyncTask使用 AsyncTask是一个抽象类,使用时需要创建子类继承。其类声明如下:public abstract class AsyncTask 继承时需要指定三...
我们知道ListView通过复用机制使得在使用时不会引起OOM的出现,那么ListView的复用机制到底是如何实现的呢?首先要讲到ListView的核心类RecycleBin...
同步和异步的区别:A调用B方法,如果B是同步的,需要等到B执行结束之后再返回通知A;而如果B是异步的,B立刻返回,等B执行结束之后再通过回调通知A。阻塞和非阻塞的区别:A调用...
#何时捕获何时抛出 当需要继续执行是就捕获,不需要继续执行就抛出异常,下面的代码就不会接着执行了
View的绘制流程概述 Window的创建:Activity启动时最终会调用ActivityThread.performLaunchActivity来完成启动,这个方法会通过...
LinkedHashMap是HashMap的子类,在拥有HashMap功能之外可以保存元素插入顺序,使得元素遍历顺序与元素插入顺序相同。同时LinkedHashMap还可以根...
1.输入流和输出流的方向是相对于内存来说的,从文件/网络等到内存方向的流称为输入流,反之为输出流。2.I/O流根据流的类型可以分为字符流和字节流。字节流都是继承inputSt...
安卓中Binder机制是一种跨进程通信的方式,在日常应用开发中四大组件底层通信机制、Activity传递对象以及AIDL的使用等,都涉及到Binder机制。既然Binder是...
在onCreate中创建了一个HandlerThread和Handler.因此和Service处理耗时操作需要另外新建Thread不同,IntentService内置Hand...
最近在阅读HanlerThread源码时在getLooper中有wait函数,在run中用到了notifyall函数。于是就思考这两个函数的作用是什么?为什么需要在这里添加这...
HashMap工作原理概述 HashMap其实也是一个数组,只不过每个元素存储的是每个链表的头结点。每个链表中每个元素是一个键值对Entry<K,V> ,每个链表中每个元素的...
以下堆栈信息日志是常见的illegalStateExecption日志。笔者是当应用出于后台时,网络响应更新fragment时出现以下问题。本文将对该异常抛出的的时间和原因进...
Handler的使用 通常在开发过程需要在子线程中进行耗时的I/O操作(例如读取文件或者连接网络),然后操作成功之后会对ui作相应的更新,但是安卓要求UI更新只能在主线程中进...
下面通过一段代码来引入反射机制的作用。 以上代码看似很好的解决需要执行不同方法的问题,需要哪个方法只要修改new类型那行代码就可以了。但是这样需要将程序停下了修改,并且重新编...
缓存不一致问题 在单CPU的时代里,随着CPU性能的不断提升,cpu的处理速度远超过cpu访问内存的速度,使得cpu必须等待IO完成,极大的浪费了CPU的性能。因此缓存技术诞...
问题场景: 项目中遇到一个问题:从FragmentA切换到FragmentB之后再返回到FragmentA时,出现FragmentA的一个成员变量mPresenter为空指针...
安卓开发中需要图片资源的名称必须是英文字母小写,然而客户给的图片资源的名称全是大写字母。一共有几千张图片,如果一个一个手动去修改效率太低了。作为一个程序员怎么可以容忍如此低效...
重叠view事件响应问题 工作当中遇到一个需求:有两个重叠并且全屏的Framelayout,交互逻辑是点击上层的button使得上层消失,下层可见;再点击下层使得下层消失上层...