
Android
文章平均质量分 82
Wain丶
做一个简单的程序员,享受自己喜爱的工作
展开
-
Android GreenDao使用教程
一、Greendao简介 Greendao是一款用于数据库创建与管理的框架,由于原生SQLite语言比较复杂繁琐,使得不少程序员不得不去学习SQLite原生语言,但是学习成本高,效率低下,所以不少公司致力于开发一款简单的数据库管理框架,较为著名的就有Greendao和ORMLite,但是就数据分析来看,Greendao的效率是高于ORMLite及其他框架的,是目前该行业的领先者。也因为...原创 2017-12-18 15:44:17 · 61034 阅读 · 10 评论 -
Android Fragment使用详解
Fragment生命周期onAttach(Activity):当Fragment和Activity发生关联时使用onCreateView(LayoutInflater, ViewGroup, Bundle):创建该Fragment的视onActivityCreate(Bundle):当Activity的onCreate方法返回时调用onDestoryView():与onCreateView相对应,...原创 2018-07-01 10:41:32 · 991 阅读 · 0 评论 -
Android 学习记录
目录 关于SwipeRefreshLayout的坑 Rtrofit2使用详解 Parcelable和Serializable的使用 SQLiteDataBase 关于activity及fragment生命周期的监听 关于Android File.delete删除文件不够彻底的问题 关于安卓7.0不允许使用Intent直接打开文件,必须使用FileProvider androi...原创 2017-12-02 19:41:59 · 1312 阅读 · 0 评论 -
Android 天气预报APP
I天气爱天气界面借鉴于就看天气,在此感谢开源项目就看天气。该应用为开源应用,禁止用于任何商业用途。感谢您的使用,这是一个简洁的天气工具,希望带给您便捷,生活本就复杂,为何不能保持一颗简洁的心。给本就繁琐的生活带来一缕阳光。人总需要一点梦想,即使一时的不顺也千万不要放弃。作为一个程序员,我总会遇到各种各样的问题,有时候觉得真的困难,可那又怎么样,生活还得继续,而我不会放弃。希望您能喜...原创 2017-12-02 19:17:08 · 7339 阅读 · 7 评论 -
Android RecyclerView使用详解
写在前头 为什么要使用RecyclerView,RecyclerViwe使用灵活,可以实现多种布局效果,完全可以替代ListView和GridView,而且其适配器的写法也很简单,连ViewHodler也帮你做了处理,使ViewHolder的使用变得更加标准化。RecyclerViwe还提供了横向和纵向等多种效果,均可以通过一句代码实现,方法简便。最后顺便提一句RecyclerVi...原创 2018-01-13 19:19:05 · 1623 阅读 · 0 评论 -
Java 虚拟机
运行时数据区域 方法区:方法区是线程共享的,用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。虚拟机栈:虚拟机栈是线程私有的,其生命周期与线程相同即每个线程下都有一个虚拟机栈,每个方法在执行前都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等。每一个方法从调用到完成就对应着一个栈帧入栈到出栈的过程。本地方法栈:作用类似于虚拟机栈,虚拟机栈...原创 2018-07-28 11:27:14 · 697 阅读 · 0 评论 -
Android 指纹识别(Touch ID)实例
指纹识别 指纹识别的支持是Android6.0以后才开始的,Google也为指纹识别提供了一些列接口,指纹识别将要用到的核心API为FingerprintManager,其中还有三个核心内部类:FingerprintManager.AuthenticationResult 指纹识别后结果的回调,FingerprintManager.AuthenticationCallback指纹识别成功失败...原创 2018-08-19 17:11:07 · 5826 阅读 · 3 评论 -
ActivityManager解析及使用
前言Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory信息等。 获取信息ActivityManager.MemoryInfo MemoryInfo中重要的字段:availMem(系统可用内存),totalMem(总内存),threshold(低内存阈值,即低内存的临界线),lowMemory(是否为低内存状态)Debug.M...原创 2018-08-27 18:54:12 · 22041 阅读 · 2 评论 -
Android 性能优化(内存优化和布局优化)
布局优化 我们可以通过手机开发者选项中的调试GPU过度来查看布局绘制的复杂情况。避免overdraw,使用RelativeLayout来替换掉多层LineraLayout嵌套减少View树的层数,Google Api文档中建议View树的高度不大于10使用<include&a原创 2018-09-02 16:56:15 · 6361 阅读 · 3 评论 -
Android 官方体系架构Lifecycle
前言Java中通过ThreadPoolExecutor来创建线程池,传入参数不同,就可以创建出不同的线程池,常用线程池有FixedThreadPool,ChachedThreadPool,SingleThreadExecutor,scheduledThreadPool.ThreadPoolExecutor参数详解corePoolSize:核心线程数,必须传入,否则线程池为空,如果当前...原创 2018-09-18 13:47:52 · 1214 阅读 · 0 评论 -
Jetpack:WorkManager任务调度与管理
WorkManager原创 2018-09-20 18:40:33 · 1668 阅读 · 0 评论 -
Android Service保活方法总结(不被杀死)双进程守护
写在前头保活Service我们需要做什么:1.在应用被关闭后保活(最难)2.在内用占用过大,系统自动释放内存时保活(优先杀死占用较高的Service)3.重启手机后自动开启Service4.手机息屏后不被释放内存5.手动清理内存时保活首先介绍一下Service的等级:一、前台进程二、可见进程三、服务进程四、后台进程五、空进程 ---关闭应用后,...原创 2018-01-08 21:04:50 · 55683 阅读 · 31 评论 -
Android MVP架构封装
目录什么是MVP架构mvp三层含义mvp模型图mvp和mvc的不同在mvp中使用LifeCycle绑定生命周期P层封装通过LifeCycle实现P层接口IPresenterP层具体实现M层封装M层具体实现V层封装V层接口基础Activity基础Fragment源码地址什么是MVP架构mvp是目前使用最为广泛的架构,其本质上是对mvc的改进,可以是代码结构更为清晰,解耦合,分离了视图逻辑和业务逻...原创 2018-10-07 17:16:49 · 3054 阅读 · 1 评论 -
Android intent-filter意图过滤器
intent-filter意图过滤器 意图过滤器在Android中应用比较广泛,但是我们使用得最多的还是给启动页面设置意图过滤器,这样我们才能在打开一个应用时知道第一个启动的Activity是哪一个.当然Intent-filter不止拥有这一个功能.还可以实现页面和原生的跳转,实现隐式意图的响应等.category(类别):category中一般会配置一条默认的参数,“android....原创 2018-11-08 16:01:41 · 1356 阅读 · 0 评论 -
Glide加载部分图片不显示问题
图片不显示原因没有添加INTERNET网络权限图片Url无法连接图片返回数据不全没有添加INTERNET网络权限解决办法:在Manifest中添加网络权限<uses-permission android:name="android.permission.INTERNET"/>图片Url无法连接例如:http://img1.imgtn.bdimg.com/it/u=...原创 2019-04-28 16:12:58 · 11336 阅读 · 0 评论 -
Android P非SDK接口限制
写在前头Android Pie(API 28)开始对非SDK接口的使用开始做了限制.只要应用引用非 SDK 接口或尝试使用反射或 JNI 来获取其句柄,就会被限制。这些限制旨在帮助提升用户体验和开发者体验,为用户降低应用发生崩溃的风险,同时为开发者降低紧急发布的风险.官网针对非SDK接口限制的解释SDK接口和非SDK接口SDK接口是指Android 框架软件包索引中记录的那些接口,...原创 2019-05-26 20:05:57 · 2485 阅读 · 5 评论 -
java.lang.UnsatisfiedLinkError解决办法
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader首先找到bulid.gradle(Moudle)文件添加以下两个配置(1)在defaultConfig 中添加 defaultConfig { multiDexEnabled true ndk { abiFilt...原创 2019-05-23 18:45:56 · 7657 阅读 · 0 评论 -
Android 约束布局ConstraintLayout解析
前言 ConstraintLayout是一个Support库,它支持向前兼容,最低可支持到API 9(android 2.3)目前app兼容性都是做到4.0以上所以ConstraintLayout的兼容性问题完全不用考虑,其本身更像是对RelativeLayout的升级,效率更高且更实用。 相对定位 layout_constraintLeft_toLeftOf vi...原创 2018-06-26 15:05:45 · 16447 阅读 · 1 评论 -
Rxjava2+Retrofit2网络请求
前言 Rxjava2这种通过观察者模式来处理异步问题,使得网络请求变得更容易,目前Rxjava2越来越火,也成为了不少框架用于异步处理的首选开源库。所以熟练掌握其基本用法也就成为了每个程序员应该具备的本领。 Gradle中添加依赖 //Rxjava compile 'io.reactivex.rxjava2:rxandroid:2.0.2' co...原创 2018-06-18 19:53:46 · 1435 阅读 · 4 评论 -
Android 贝塞尔曲线-消息拖拽消失
写在前头 写消息拖拽效果的文章不少,但是大部分都把自定义View写死了,我们要实现的是传入一个View,每个View都可以实现拖拽消失爆炸的效果,当然我也是站在巨人的肩膀上来学习的。但个人觉得程序员本就应该敢于学习和借鉴。源码地址:源码Github地址 效果图 分析(用到的知识点): (1)ValueAnimator (数值生成器) 用于生成数值,可以设置...原创 2018-02-07 20:23:30 · 1666 阅读 · 0 评论 -
EventBus事件处理总线
写在前头 EventBus 是一个事件处理总线,可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法。它比广播的使用更为简便,且广播的效率并不高。 EventBus的优势简化了组件间的通讯 分离了事件的发送者和接受者 在Activity、Fragment和...原创 2018-01-30 18:16:24 · 1500 阅读 · 0 评论 -
玩转ButterKnife注解(黄油刀)
写在前头 身为一个Android程序员,最麻烦的事情应该就是绑定View吧,一个类有的有十多个View需要绑定更有甚者甚至超过个一百个。一个不会偷懒的程序员一定不是一个好程序员。为了偷懒ButterKnife就应运而生了,ButterKnife可以说是一款很成功的开源库。它不仅可以帮我们绑定View,还可以用来绑定资源文件。 ButterKnife的优点:(1)代码简洁,易懂...原创 2018-03-02 19:34:00 · 928 阅读 · 0 评论 -
Rtrofit2+Okhttp让网络请求更简单
Rtrofit与Okhttp简介 提到Rtrofit和Okhttp就不得不说到square团队,这是一个非常优秀的团队,其团队奉献了不少优秀的开源库。目前Rtrofit和Okhttp可以说是android网络框架中的明星,其使用简便和配合解耦度高使得它们成为了android程序员们的最爱,目前使用的Rtrofit为2.0以后的版本。Retrofit官网Square团队的github地址Rtr...原创 2018-03-12 20:21:49 · 1418 阅读 · 0 评论 -
Android 数据序列化实现方法
数据序列化的作用 可实现进程间通信,本地数据存储,网络数据传输等都需要实现序列化,但是由于应用场景不同,序列化的方式也不同,因为要考虑效率和使用难易的问题。序列化的目的其实简单来说就是想实现数据的传输。序列化与反序列化 序列化:将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序...原创 2018-03-22 17:28:47 · 1246 阅读 · 0 评论 -
Md5加密Java实现
什么是MD5加密 百度给出的解释是:MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。在一些初始化处理后,MD5以512位分组来处理输入文本,每一分...原创 2017-12-07 19:59:32 · 1107 阅读 · 0 评论 -
Android 让app更加动人(美化)
一、高斯模糊 高斯模糊就是类似于图片模糊的效果,高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。 效果图(图片来源于网易云音乐,其音乐播放背景就是中间图片的高斯模糊) (1)高斯模糊算法部分@Requir...原创 2018-03-20 08:57:01 · 10367 阅读 · 0 评论 -
Android 跨进程通信Messenger和AIDL
进程间通信IPC IPC是 Inter-Proscess Communication的缩写,含义为进程间的通讯或者跨进程通讯,是指两个进程之间进行数据交换的过程。按操作系统的中的描述,线程是CPU调度最小的单元,同时线程是一种有限的系统资源,而进程是指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程,因此进程和线程是包含于被包含的关系。为什么要使...原创 2018-03-31 15:49:45 · 1084 阅读 · 0 评论 -
Android 插件式换肤实现
写在前头 Android的换肤机制有不少,通过加载不同资源文件进行换肤,通过不同的Style文件进行换肤,但是最主流的还是插件式换肤,将资源文件打成一个包,通过AssetManager去加载这个包中的资源文件来换肤。 换肤代码public class SkinManager { private SkinManager(){ } private st...原创 2018-04-15 14:15:56 · 916 阅读 · 0 评论 -
Android WakeLock休眠锁
WakeLock(休眠锁) WakeLock用于保持设备的唤醒状态,有些情况下,即时用户不操作App,我们也需要保持屏幕处于唤醒状态,以保证用户体验,比如视频类APP和计步类APP,视频类APP需要屏幕一直保持常量,计步类APP要求熄屏后程序依然保持运行状态。 WakeLock的多种类型: PARTIAL_WAKE_LOCK:保持CPU正常运转,但屏幕和键盘灯都可能是...原创 2018-04-05 14:29:24 · 4702 阅读 · 0 评论 -
Android 四大组件之BroadcastReceiver广播接收器(使用详解)
BroadcastReceiver 用于接收系统广播或者一些广播消息,我们可以通过广播实现通知组件信息变更,跨应用通信和跨进程通信。由于广播在android中的到了广泛应用,列如开机启动服务,电量变化,音量变化都是广播,所以BroadcastReceiver广播接收器也被作为了android四大组件之一。广播分为三类:普通广播(无序广播),有序广播,粘性广播。Broa...原创 2018-05-09 16:51:25 · 2615 阅读 · 0 评论 -
Android Multidex解决64k方法名限制
一、为什么要使用Multidex Android5.0之前规定每个android应用只能包含一个dex文件,但是系统限制每个dex文件的大小不得超过64k。由于这个限制每个应用的方法数量也被严格限制了起来。但是由于科技发展,一个应用程序的类越来越多,dex文件大小的限制阻碍了应用发展。为了解决这一问题google官方提出了一种新的解决办法,即Multidex的出现。完美的解决...原创 2017-12-12 15:48:46 · 901 阅读 · 0 评论 -
Android NestedScrollView嵌套RecyclerView冲突
NestedScrollView与RecyclerView冲突 当使用了RecyclerView以后如果希望父布局依然可以滑动,我们需要设置父布局为NestedScrollView(以NestedScrollView来代替ScrollView),但是NestedScrollView时常会与RecyclerView 发生冲突,使滑动卡顿以及占据RecyclerView的监听事...原创 2018-01-19 21:35:16 · 3110 阅读 · 0 评论 -
Android 自定义View简单归纳
什么是自定义View自定义View即继承与View和ViewGroup的自定义控件,可以实现系统控件以外的功能,也可以继承与系统控件,对系统控件进行所需要的修改。我也做了一个简单的自定义TextView,但是并没有完成其OnTouchEvent事件。在这里我将自定义View分成五步第一步创建自定属性在res文件夹下创建一个attrs文件。然后通过declare-styleabl原创 2017-12-03 16:27:40 · 657 阅读 · 0 评论 -
Activity深入理解
目录Activity生命周期 Activity的交互 Activity横竖屏切换 Activity的启动方式 Activity之间的数据交换 Activity的启动模式 Intent Flag启动模式 清空任务栈 监听Anctivity生命周期 Activity之Recreate 一、Activity生命周期OnCreate 创建Activity时调用 销毁以前...原创 2018-01-04 14:35:55 · 5056 阅读 · 0 评论 -
Okhttp超时时间设置和相关问题解决
okhttp超时设置okhttp超时相关问题超时时间设置日志拦截器java.net.UnknownHostException异常DNS解析异常拦截okhttp超时相关问题设置了超时时间,但是超时时间还是很长,因为在DNS异常处理时花费了大量时间,我们需要给DNS解析设置超时时间UnknownHostException异常处理日志拦截器打印请求和回传消息超时时间设置//okhtt...原创 2019-07-29 19:31:52 · 7268 阅读 · 0 评论