Android学习
ZhengPuti
要把问题想透,要不停的想,不停的琢磨,一刻都不能停
展开
-
多线程下载多个文件
http://www.imooc.com学习小技巧:1: 数据库类的修改多线程对数据化的保护,需要构造函数为私有,使用单例模式,这样才能确保线程调用的实体为一个2:Eclipse的操作技巧 在Eclipse中设置xml和java的自动补全功能,在xml文件和java编码中能快速补全代码3:数据库操作的修改 在更改操作数据库的各个操作中,添原创 2015-05-26 17:10:39 · 478 阅读 · 0 评论 -
Gson 源码解析-2015/10/13
问题:1: 如果是Jason解析,那么直接调用方式是json.optint(), json.optStr等方法,调研Json如何解析的@1: 两个主类,JSONObject 和 JSONTokener JSONObject的LinkedHashMap, LinkedHashMap继承于HashMap,但是是有顺序的@2: BOM需要注意,bit order mark 用于标记原创 2015-10-13 18:25:55 · 247 阅读 · 0 评论 -
[android源码] smarttablayout源码解析
1: demo的入口,自己推测用一个绝对或者相对布局写死,但是发现竟然用enum来写的,有点儿出乎意料enum可以有构造体,可以有函数,还能产生序列的对应值如果不用enum,那么需要需要用类来封装,然后放到map里面,这里enum内部直接生成了map下面看对enum的常量的访问: for (Demo demo : Demo.values()原创 2016-02-18 19:32:05 · 1076 阅读 · 0 评论 -
git 远程分支版本回退
方法:git reset --hard commit_id(可用 git log –oneline 查看) ###本地代码回退git push origin HEAD --force ###远程提交回退或者git reset --hard HEAD~1git push --forcePS.git revert 和 git reset的区别1. git revert是转载 2016-03-08 13:20:51 · 11129 阅读 · 0 评论 -
app图表上数字的更新调研
需求最初产生于自己开发的app,医生需要显示未读消息的条数,ios段可以轻松实现这个功能这个ui的显示在android里面不是原生,而ios是原生的,所以android的实现在不同的手机上有不同的显示android上基本的实现方式是数据源改变的时候,发送广播给系统,系统会自动更新角标,但是小米和华为的都没有用default的badge,小米有具体的更新事件,而华为并没有暴露出来原创 2016-03-08 13:33:02 · 227 阅读 · 0 评论 -
LinearLayout 测算疑问源码研究
问题的引出:有一个linearlayout A里面有两个button,这个Linearlayout父类是一个总的Linearylayout B,我指定了A 的高度,但是调用A.measure(0,0)的时候总是返回的值不能对上自己设置的值,计划研究一番。第一步: 首先看调用的函数源码:这个是view的源码,可以看出里面使用了缓存,用了longSparseLongArray,这个没用原创 2016-09-09 20:46:30 · 329 阅读 · 2 评论 -
UIL的LRU算法源码查阅
具体文件LruMemoryCache在我看来,应该用的数据结构是arraylist,然后将各个key值的索引数字记录下来,然后去更新对应的索引,不对啊,这个是LFU!!好吧,应该用一个链表来把数据串起来,然后去更新数据。核心问题点是如何在buffer满的时候移除老的数据呢??直接移除吧!!自己搞混了LFU和LRU导致思路混乱。private final Linked原创 2016-09-01 20:17:42 · 245 阅读 · 0 评论 -
LinkedList 源码解析
private static final long serialVersionUID = 876323262645176354L; //版本的序列号表示 transient int size = 0; //大小 transient Link voidLink; //大小和头结点不参与序列化 上面是上下文的环境变量具体数据的结点会有两个指针,指向前后两个结点原创 2016-09-02 19:05:04 · 211 阅读 · 0 评论 -
ListView 源码阅读之AdapterView
public abstract class AdapterView extends ViewGrou1: 基本类型是abstract, 使用的类型为Adapter的子类 /** * The item view type returned by {@link Adapter#getItemViewType(int)} when * the adapter does not原创 2016-09-06 18:48:07 · 279 阅读 · 0 评论 -
TypeToken源码阅读
protected TypeToken() { this.type = getSuperclassTypeParameter(getClass()); //获取到泛型类的类型 this.rawType = (Class) $Gson$Types.getRawType(type); this.hashCode = type.hashCode(); } /*原创 2016-11-04 14:07:31 · 433 阅读 · 0 评论 -
android 实践-2015-8-21
1: 服务器给的数据中key值有关键字,导致gson的键值一直不能写成功2: fragment可以用Popstack,设置清除类型来清掉堆栈3: popwindow的显示一直在上面,因为width越界导致显示不正常4: iphone有个问题,如果报告不加密,但是获取到密码了,会显示导入失败,但是java会自适应不适用解压密码5: RestFul 风格原创 2015-10-09 17:38:46 · 199 阅读 · 0 评论 -
android 实践8-8
try { PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0); // 当前应用的版本名称 String versionName = info.versionName; // 当前版本的版本号 i原创 2015-10-09 17:36:22 · 237 阅读 · 0 评论 -
Android 中使用线程锁的理解
还是用几个场景来理解吧1: handlerthread的场景looper是要获得对象,但是在线程启动之后,才能获得looper的对象,如果此时在主线程中调用handlerthread.getLooper那么就需要使用线程锁来同步一下。代码中用的是this的指针。2:后续源码中有的话再继续添加原创 2015-05-22 16:18:20 · 883 阅读 · 0 评论 -
异步消息机制的理解
1: Looper准备工作场地(sThreadLocal), 和工作用的道具(MessageQueue)2 : Handler可以理解为 该机制的插件,在activity中,因为activitythread已经定义了looper,所以直接实例化hander就可以使用了3: MessageQueue是系统中存储有序资源的数据结构,对用户来说是黑盒子@1: 思考场景,如果原创 2015-05-22 16:12:57 · 347 阅读 · 0 评论 -
Android gradle学习
gradlehttp://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html原创 2015-10-09 17:37:41 · 234 阅读 · 0 评论 -
hashmap的遍历方法
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val =原创 2015-10-09 17:58:33 · 181 阅读 · 0 评论 -
服务器实践 - 2015-09-19
1: 手机连接自己开的热点,一直连接不上@1: 用测试工具wiztool验证服务是否正常开启,发现服务正常开启,下一步检测服务对外是否正常@2: 让别人连接自己的服务,能够连接上,说明服务对外也是正常的@3: 手机能够连接47,但是不能连接自己,会不会是自己热点的问题呢?@4: 换个热点,发现可以访问,那么说明自己连接自己的热点服务器的地址应该填写无线网卡的地址原创 2015-10-09 18:15:40 · 215 阅读 · 0 评论 -
android 实践- 2015-09-12
1: viewpager不能自测高度的解决方案--: 在xml中定死高度比如直接定为200dp-- : 重新自定义viewpage的测算,用子类的高度来重新measure父类的高度 核心代码: @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { i原创 2015-10-09 18:11:24 · 232 阅读 · 0 评论 -
Gson源码的研读-2015/10/9
当前发现最核心的代码如下: public static final TypeAdapter JSON_ELEMENT = new TypeAdapter() { @Override public JsonElement read(JsonReader in) throws IOException { switch (in.peek()) { case STRING原创 2015-10-09 20:24:29 · 258 阅读 · 0 评论 -
android 实践 8-7
1: db的更新操作不应该是删除再插入,应该用update的接口2: fragment重叠显示,发现是大背景没有颜色3:在splash过程中,添加进新逻辑之后,出现闪屏,调试之后发现是finish造成的4:轮播效果实现过程中遇到两个问题@1: 消息混乱,在处理之前应该remove掉消息,要不然会有消息冗余@2: adapter的中对view始终是空的,是以为原创 2015-10-09 17:35:36 · 242 阅读 · 0 评论 -
测试view的高度-8-4
1: 一直下载的template的文件是网页的内容,很奇怪,之前是好的,后来恍然大悟是网页的内容2:测试view的高度和宽带 finalImageView imgtest = (ImageView) findViewById(R.id.data_range_bg);final ViewTreeObserver viewTreeObserver = imgtest.g原创 2015-10-09 17:33:50 · 188 阅读 · 0 评论 -
并发中锁的理解
1:锁的原始概念最原始的实现方式是用一个状态变量来控制是否进入,如果有已经在访问的,那么将运行的线程并入到一个池子里面,否则直接执行线程。在这个基本思路上衍生出好多同步需求来。也就是说两个基本的变量,1: 状态量 2: 缓冲池2:synchronized 系统自己实现了阻塞式队列同步算法。如果有一个线程出现问题,不能释放锁,会导致其他的线程同步出问题对应的有非阻塞式的原创 2016-11-09 16:21:04 · 244 阅读 · 0 评论