- 博客(49)
- 资源 (156)
- 收藏
- 关注
转载 react-native-android之初次相识
作为一名Android开发者,我的感觉就是,一步一卡,卡的潇洒。但是我还是要学react-native,不要问我为什么,因为我相信一门解决了原生app,开发周期长,开发成本高,升级代价大的语言一定会火,而且react语言看起来那么熟悉,组建式的布局方式,让没有接触过web开发的我,感觉没有一点点晦涩,那么的自然,甚至体会不到web同学口中的革命性创新,native的开发者大概还会蠢萌的认为
2016-06-29 22:30:42 1089
转载 App热补丁动态修复技术介绍
安卓App热补丁动态修复技术介绍来自qq空间团队:微信号qzonemobiledevQQ空间终端开发团队1.背景当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装。有时候仅仅是为了修改了一行代码,也要付出巨大的成本进行换包和重新发
2016-06-29 17:46:20 1118
原创 Android Studio环境下搭建ReactNative
1.安装Android Studio首先肯定是 安装Android Studio(包含SDK)(国内推荐)ps:这里有一点要注意,需要为SDK配置环境变量,名称必须为ANDROID_HOME2.安装Nodo.js(自带npm)从官网下载node.js的官方4.1版本或更高版本。安装完成后建议设置npm镜像以加速后面的过程(或使用科学上网工具),也可使用nrm具体参考链接。n
2016-06-28 09:26:55 6492
原创 一个可以拖动的自定义Gridview代码
这个可以拖动的gridview继承于gridview,所以,用法和gridview一样,代码如下:public class DragGridView extends GridView { private long dragResponseMS = 700; // item长按响应的时间 private int mDragPosition;// 正在拖拽的position
2016-06-28 09:01:41 1930
原创 android图片加载库Glide
什么是Glide?Glide是一个加载图片的库,作者是bumptech,它是在泰国举行的google 开发者论坛上google为我们介绍的,这个库被广泛的运用在google的开源项目中。Glide解决什么问题?Glide是一个非常成熟的图片加载库,他可以从多个源加载图片,如:网路,本地,Uri等,更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一个低的内存消
2016-06-27 23:29:21 3893
转载 android开发性能分析
1 背景其实有点不想写这篇文章的,但是又想写,有些矛盾。不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结、我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只给出啥啥啥不能用,啥啥啥该咋用等,却很少有较为系统的进行真正性能案例分析的,大多数都是嘴上喊喊或者死记住规则而已(当然了,这话我自己听着都有些刺耳,实在不好意思,其实关于性能优化的优质博文网上也
2016-06-27 21:58:03 3542
转载 android开发之http协议
http协议学习系列1. 基础概念篇1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC
2016-06-27 20:41:40 2636
转载 React Native之携程Moles框架
因为支持用javascript开发原生应用,React Native一推出就受到不少公司热捧,各家都跃跃欲试。但有一个痛点是,在移动端,我们是否有必要开发多套程序:iOS、Android和H5?本次将通过对Moles框架的分享,介绍携程在React Native方面的实战干货,希望给大家一些灵感和启发。本次分享的内容包括三个方面:Moles框架在React Native和我们主Ap
2016-06-24 23:18:05 3815
原创 Java泛型和通配符那点事
泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。 可以在集合框架(Collection framework)中看到泛型的动机。例如,Map类允许您向一个Map添加任意类的对象,即使最常见的情况是在给定映射
2016-06-24 08:45:15 2817
原创 java 多线程和线程池
● 多线程多线程的概念很好理解就是多条线程同时存在,但要用好多线程确不容易,涉及到多线程间通信,多线程共用一个资源等诸多问题。使用多线程的优缺点:优点:1)适当的提高程序的执行效率(多个线程同时执行)。2)适当的提高了资源利用率(CPU、内存等)。缺点:1)占用一定的内存空间。2)线程越多CPU的调度开销越大。3)程序的复杂度会上升。对于多线程的示例代码感兴
2016-06-23 00:01:47 2716 1
原创 android 线程那点事
在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都会有相应的开销,当系统中存在大量的线程时,系统会通过时间片轮转的方式调度每个线程,在这么多线程中有一个被称为主线程,主线程是指进程所拥有的线程,在JAVA中默认情况下一个进程只有一个线程,这个线程就是主线程。主线程主要处理界面交互相关的逻辑,因为用户随时会和界面发生交互,因此
2016-06-22 14:23:22 1734
原创 android 向webview传值
android中可以使用WebView加载网页,同时Android端的java代码可以与网页上的javascript代码之间相互调用。效果图:(一)Android部分:布局代码: xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas
2016-06-22 09:16:42 3021
转载 RecyclerView notifyItem闪烁的问题
之前我们做点赞,用listview做的话,就是在item实现点击后,写一个scal动画,不过现在都转到RecyclerView,那么要做这种效果于是做了一个notifyItemChanged()的操作,功能都顺利实现,美中不足的是当前Item闪了一下,QA甚至为此提了Bug,一开始以为是图片加载库的问题,之后随着图片加载库从ImageLoader换成Picaso,又换成Glide,这个Bug一直如
2016-06-22 09:08:16 8309 4
转载 Android开发中的安全
根据Android四大框架来解说安全机制 代码安全java不同于C/C++,java是解释性语言,存在代码被反编译的隐患;默认混淆器为proguard,最新版本为4.7; proguard还可用来压缩、优化java字节码,删除无用的类、字段、方法、属性、注释等。配置方法为在Android.mk中设置LOCAL_PROGUARD_FLAG_FILES
2016-06-22 08:54:01 937
原创 android ViewPager+Fragment之懒加载
说说写这篇博客的背景吧,前两天去面试,问到一个问题说的是:比如我们首页,是有3个fragment构成的,并且要是实现作用可以滑,那么这个最好的选择就是ViewPager+fragment了,但是我们知道ViewPager+fragment是做预加载的,然而这种方法有一个坏处,当前页面和预加载页面都有大量的网络请求,可能就会比较慢,这样就会造成不好打体验。其实我们忽略的一个问题,Android的fr
2016-06-21 23:38:07 1226
转载 我所理解的Android 启动模式
首先,这是从 一个开源网站转载的,觉得写得不错,对我们之前理解的activity的启动模式是一个新的理解方式,并给出实际的应用场景。任务栈是什么任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。启动一个Ap
2016-06-21 23:02:07 3220
原创 android 开发Handler源码剖析
Android的消息机制主要是Handler的运行机制,而讲Handler的机制,又需要和MessageQueue和Looper结合。MessageQueue中文意思是消息队列,虽说叫队列,但是其内部结构并不是队列组成的,而是采用了单链表的形式来存储消息。MessageQueue只是负责存储消息,并不处理消息(这里指消息的轮训),Looper刚好弥补了这个空缺。我在知道,Handler创建的时候,
2016-06-20 20:08:57 3569
原创 Rest api简介
理解和使用内容协商我们的开发者在发送一个 REST API 请求的同时,根据应用场景,针对相同的资源,可能会期待不同的返回形式。比如,我希望根据用户客户端语言,同一个资源的内容可以返回不同的语言。又比如,当我使用 Java 编程的时候,我希望得到 ATOM 格式的返回结果,而当我使用 JavaScript 编程的时候,我希望得到 Json 格式的返回结果。因此,我们在设计
2016-06-20 11:43:51 1263
原创 Android 常用的ORM框架详解
1. OrmLiteOrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。官方网站:http://ormlite.com/sqlite_java_android_orm.shtml这个也是之前我在项目中 经常用到的,下面提供一个例子新建一个
2016-06-19 22:21:21 1213
原创 Android 之dragger使用
添加apt添加仓储buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4+' }}1234567812345678添加aptap
2016-06-18 23:45:16 2239
原创 Rxjava + retrofit + dagger2 + mvp搭建Android框架
最近出去面试,总会被问到我们项目现在采用的什么开发框架,不过据我的经验网络框架(volley)+图片缓存(uIl)+数据库(orm)+mvp,不过现在这套框架比较好了,现在采用什么呢?Rxjava + retrofit + dagger2 + mvp。好,那我们接下来说说由这几种库来组成我们一个常用的开发框架(当然其他的还有一些什么推送什么的我们另当别论)。借用google的一个MVP的说明图
2016-06-18 23:28:55 3199 1
原创 Java的依赖注入(控制反转)
两个主角“依赖注入”和“控制反转”:1、二都说的都是同一件事,只是叫法不同。是一个重要的面向对象编程的法则,也是一种设计模式;2、英文原称:依赖注入,Dependency Injection(DI); 控制反转,Inversion of Control(IoC)。3、作用:削减计算机程序的耦合问题;4、为什么叫“控制反转”:创建被调用者的工作不再由调用者
2016-06-18 23:26:12 5741 1
原创 内存泄漏和内存溢出的区别
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会
2016-06-18 11:57:15 5448 5
转载 Android LruCache技术原理
概述记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:Disk
2016-06-17 09:05:12 2596
原创 AndFix使用感想
AndFix已经使用了一段时间了,但是到AndFix上看了一下,最近2个月都没有更新代码了,有141个issues和3个pull request没人处理,其实AndFix的Contributors就俩个人,一个是rogerAce还有个是supern lee,虽然快要沦为了阿里的KPI项目,但是并不妨碍AndFix在业界的地位-一个低成本快速接入的Bugxiuf第一方案。第二方案Nu
2016-06-16 20:21:32 1596 1
转载 Android 几种网络请求的区别与联系
HttpUrlConnection最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient。在Android 2.2版本之前,HttpClien
2016-06-16 12:32:51 6782
原创 23种设计模式
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
2016-06-15 15:16:52 5839 1
转载 Java 继承Thread类和实现Runnable接口的区别
ava中线程的创建有两种方式:1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中2. 通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这
2016-06-13 23:28:24 3478 2
原创 Map排序
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。按键排序(sort by key)jdk内置的Java.util包下的TreeMap既可满足此类需求,原理很简单,其重载的构造器之一有一个参数,该参数接受一个比较器,比较器定义比较规则,比较规则就是作用于Tr
2016-06-13 22:10:02 2416 1
原创 数据结构之栈和队列
我们知道,在数组中,若知道数据项的下标,便可立即访问该数据项,或者通过顺序搜索数据项,访问到数组中的各个数据项。但是栈和队列不同,它们的访问是受限制的,即在特定时刻只有一个数据项可以被读取或者被删除。众所周知,栈是先进后出,只能访问栈顶的数据,队列是先进先出,只能访问头部数据。这里不再赘述。 栈的主要机制可以用数组来实现,也可以用链表来实现,下面用数组来实现栈的基本操作:
2016-06-12 21:00:21 1482 1
原创 Android ORM 框架之 greenDAO
前言我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite。然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等。所以,适用于 Android 的ORM 框架也就孕育而生了,现在市面上主流的框架有 OrmLite、SugarORM、Active Android、Realm 与 GreenDAO。而今天的主角便是 greenDAO,下面,我将详
2016-06-12 13:51:05 4347 2
转载 droid invalidate和postinvalidate的区别
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 invalidate()是用来刷新View的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate(
2016-06-09 12:17:15 1016 1
原创 java注解及在butternife中的实践和原理
1. 背景之前去一个公司,说到了java的注解,问java的注解有几种方式,然后我提到了android中的butternife和afinal注解工具,我们知道butternife在6.1版本的时候还是InjectView,可以到7.1的时候用的却是BInd,这里面有什么区别吗。简单的说,InjectView是在运行的时间进行注解,而BInd在android安装的时候就执行了,肯定后者
2016-06-08 23:41:25 3648 1
原创 数据结构之堆和栈
内存分配策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. 栈
2016-06-07 15:14:29 1457 1
原创 数据结构是哈希表(hashTable)
哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映射函数称为哈希函数(也称为散列函数),映射过程称为哈希化,存放记录的数组叫做散列表。比如我们可以用下面的方法将关键字映射成数组的下标:arrayIndex = hugeNumber % arraySize。 哈希化之
2016-06-06 21:34:02 5622 1
转载 java面试之常见编程题
1.编程实现:二分搜索算法解答:public class SearchTest {/** 被搜索数据的大小 */private static final int size = 5000000;public static void main(String[] args) {long[] data = new long[size];// 添加测试
2016-06-06 13:44:02 5291
原创 数据结构之二叉树
二叉树的定义:二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。 这个定义
2016-06-06 09:46:36 1440
原创 数据结构之数组
一.数组的基本概念数组可以看成是多个相同类型数据组合,对这些数据的统一管理。数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组的元素可以是任何数据类型,包括基本类型和引用类型。C和C++中的数组都可以分配在栈上面,而JAVA中的数组是只能分配在堆上面的,因为JAVA中的数组是引用类型。二.一维数组一维数组的声明方式有2种:格式一:
2016-06-06 00:03:23 4533
Android离线包前端代码
2022-06-03
ModalViewDemo.zip
2020-11-30
ArouterDemo.zip
2019-07-05
Android仿微信图片选择
2019-03-12
iOS骨架屏源码
2019-01-04
Javassist代码注入
2018-10-15
仿喜马拉雅FM
2018-09-26
Android原生集成RN
2018-06-06
Flutter跨平台
2018-06-01
阿里的Atlas组件化框架
2018-05-10
Android模块化
2018-04-23
hexo博客打赏源码
2018-03-27
阿里云精选API
2017-12-27
美团RN项目
2017-07-31
安卓聊天页面
2017-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人