小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 小逝 ...
日期 3号->11号 (12号自测)
UI界面问题
指示器(换一个框架,能自定义下划线的)
退出登录(放在设置里)
发现那些一个图片的时候换个控件(要能设置缩放type)
社团暂无内容要below全部社团
获取定位Dialog重构一些界面
一些状态栏
创建社团界面优化
缺少的模块
搜索(界面,接口)
创建活动(界面)
社团历史动态(接口)
现发现的Bug
设置兴趣标签(ArrayList转Json字符串出错)
前言
在我眼里设计模式是对代码的一种高度封装,让代码从幼虫变为茧的过程,在Android开发中,有很多框架的设计模式都是非常优雅高效的,例如Retrofit2中使用了代理模式,适配器模式,构造者模式将框架设计的非常完美且扩展性Nice,再例如RxJava使用的观察者模式将我们的异步开发可以像同步开发一样流式使用,这都是设计模式的资深使用,如上的那些框架并不是个人开发的,是多个工程师一起设计,一起合作打造,而在我们这些小生眼里,去理解都要抽丝剥茧的去学习,去挖掘,回首运用在自己的项目当中,这也是我们学习框架的一个主要目的,那就是学习他们的设计理念,设计模式。
设计模式有无好坏之分
首先同...
title:为什么Android主线程的looper.loop不会导致循环卡死Looper与Hnadler其实是通过CS模式由Binder进行通讯的
只有主线程发送给Handler让Looper循环的消息中进行了耗时操作才会导致ANR,而Looper中不会,因为Looper在没有消息时会将线程睡眠。
Looper并不是运行在主线程里的,他是运行在binder线程中,在ActivityThread的main()方法中创建好Looper和ActivityThread后通过thread.attach方法传递false创建了一个新的binder线程,在调用Looper.loop开启循环
H...
title WebView面试详解介绍AsyncTask内部是由handler+线程池实现的
##优点
由于AsyncTask内部提供了线程池,就会对我们的线程有一个很好地管理和控制,也能减少对于反复创建销毁线程的不必要的开销
内部代码介绍
asyncTask是个抽象类,需要子类继承
onPreExecute() - 主线程执行的,是在任务执行前运行的可以做一些数据初始化操作
doInBackground() - 子线程运行的,可以进行耗时操作
onProgressUpdata() -主线程运行,在publishProgress()调用之后执行更新进度
onPostExecute(...
title WebView面试详解#WebView常见的坑
在API16之前,会出现远程代码执行安全漏洞问题,因为该应用没有正确限制使用addJavaScripInterface方法导致远程攻击者可以使用Java反射任意调用java方法
-webview写在其他容器中时,销毁时需要将webview remove掉,然后释放资源,才能将webview真正的释放掉,不然会导致内存泄漏-WebViewClient.onPageFinished()在web跳转时可能会被调用无数次,所以推荐使用WebChromeClient.onProgressChanged-后台耗电 webview会自己...
title AIDLAIDL
进程间通讯(IPC)机制 通过编写aidl文件 在通过IDE自动生成AIDL文件,来实现客户端与服务端通讯
#使用
在main中创建aidl文件夹
在aidl文件夹中创建对象实体类,在创建对象映射类aidl文件(包名要一致)
make工程就生成了binder的java文件
服务端
新建servce
创建生成的binder对象实例
定义方法,在binder中返回
客户端
实现ServceConnection接口拿到AIDL类
通过BindServce绑定服务
调用AIDL类中定义好的方法去进行操作请求
什么是序列化
由于存在内存中的对象都是短暂的,为了把对象的状态保存下来,就需要把对象写到磁盘或者其他介质中
序列化: 内存对象->磁盘或其他介质
反序列化:磁盘或其他介质->内存对象在Android中 一个对象要序列化就要实现Parcelable接口或者Serializable接口
回答从两方面回答 效率和实现
Serializable 实现接口即可,编译期会生成一个Long型的序列化UID(作用是反序列化时判断UID是否相同,相同才能反序列化)优点:实现简单 缺点:开销大
Parcelable 适用麻烦,需要实现writeParcel 将对象映射成parcel对象,然...
bindServce使用创建好Servce之后,去实现onBind()方法,返回当前的Servce实例然后创建Connection,去实现ServceConnection接口,然后重写ServceConnected与onServceDisConnected来实现Servce的引用然后调用bindServce来绑定Servce服务
先绑定服务,后启动服务Servce先是会绑定服务,启动服务后,就会解除绑定的服务,变为startServce的状态,变得不可控
先启动服务,后绑定服务先startServce在bindServce,这个服务并不会从启动服务变为绑定服务状态,虽然会绑定Activi...