codezjx's Home


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

Architecture Components之Room初探

发表于 2018-07-14 | 分类于 Architecture Components
简介Room在SQLite之上提供了一层抽象,能让我们在使用SQLite全部功能的同时还能流畅的对数据库进行访问。Room基于注解对SQLite进行了大量封装,用法十分简洁且功能强大并能与RxJava/LiveData等无缝结合使用,因此官方强烈推荐使用Room来替代SQLite。 导入依赖导入依赖只需要前2行就够了,可以选择是否需要搭配RxJava使用: 1234implementation "android.arch.persistence.room:runtime:1.1.1"annota ...
阅读全文 »

Architecture Components之LiveData初探

发表于 2018-07-14 | 分类于 Architecture Components
简介LiveData是可观察的数据持有者,一般情况下与ViewModel搭配使用。它也是典型的观察者模式实现,但是更先进,因为它具有生命周期感知,能确保仅在组件处于活动状态的时候才更新数据,并且在组件销毁的时候能自动解绑,以防止内存泄漏。 LiveData的优点 没有内存泄漏:观察者对象是跟Lifecycle对象绑定在一起的,当处于destroyed状态的时候会自动释放资源并解绑。 当Lifecycle组件处于inactive状态时不会收到事件。 不需要手动管理生命周期,LiveData将自动进 ...
阅读全文 »

Architecture Components之ViewModel源码分析

发表于 2018-07-13 | 分类于 Architecture Components
简介ViewModel的作用如它的名字所示,用来存储View相关的数据,并且他会自动感知当前界面的生命周期,以便在界面重建的时候能够及时恢复数据(如屏幕旋转、语言等Configuration变化的时候) 一分钟上手我们来简单看下他的使用方法,真的非常简单,首先实现一个自定义的ViewModel(先忽略LiveData,可把它理解为一个数据的包装器): 12345678910public class CustomViewModel extends ViewModel { priva ...
阅读全文 »

Architecture Components之Lifecycles初探

发表于 2018-07-12 | 分类于 Architecture Components
关于Android JetpackAndroid Jetpack是在Google I/O 2018中推出的新一代组件、工具和架构指导,旨在加快您的Android应用开发速度。Jetpack组件将现有的支持库与架构组件联系起来,并将它们分成四个类别: 关于Architecture ComponentsArchitecture Components其实早在Google I/O 2017就推出了,是Jetpack中的架构库,可帮助你设计健壮,可测试和可维护的应用程序。主要用于实现管理UI组件生命周期和 ...
阅读全文 »

从ContentProvider报SecurityException分析出Android5.0+的一个隐藏大坑

发表于 2018-03-30 | 分类于 Android
前言最近在开发A应用的时候对接了合作方的一个B应用,对方很快就把接口文档发了过来,约定好我们之间通过B应用提供的XXXContentProvider来获取相关的数据。一切看起来是如此的普通与简单,但是从刚开始调试的那一刻起,诡异的事情就发送了。九十岁老太为何起死回生?数百头母猪为何半夜惨叫?女生宿舍为何频频失窃?超市方便面为何惨招毒手?在这一切的背后,是人性的扭曲,还是道德的沦丧?事件的最后,让我发现了Android系统的一个大坑!滴滴~ 老司机马上开车,带你一同踏上这段难忘的踩坑经历~ 先简单 ...
阅读全文 »

开源了一款Android的IPC库AndLinker,结合了AIDL和Retrofit的特性,支持RxJava

发表于 2018-03-16 | 分类于 Open Source
前言工作中经常会遇到进程间通信的需求,但每次通过AIDL实现又觉得步骤十分的繁琐。因此用业余时间自己设计并开源了这款IPC库。设计思路来源于Retrofit通过动态代理生成实现类的这种方式,把AIDL与Retrofit的特性完美的结合起来。 这是你们没有体验过的全新方式,只需体验三分钟,你就会像我一样,爱上这款开源库~ 项目地址:https://github.com/codezjx/AndLinker 简介AndLinker是一款Android上的IPC (进程间通信) 库,结合了AIDL和Re ...
阅读全文 »

Android Studio 3.0及Gradle Plugin 3.0升级注意事项

发表于 2017-11-23 | 分类于 Gradle
最近终于有空升级了一下项目中的Gradle和Gradle Plugin的版本,还是踩了蛮多的坑。特别是依赖以及渠道编译这块变动较大,因此把遇到的一些问题点记录下来,分享给后人查阅~ Gradle版本升级其实当AS升级到3.0之后,Gradle Plugin和Gradle不升级也是可以继续使用的,但很多新的特性如:Java8支持、新的依赖匹配机制、AAPT2等新功能都无法正常使用~ 所以长期看来,最后还是得升的。 Gradle Plugin升级到3.0.0及以上,修改project/build ...
阅读全文 »

关于ANR异常捕获与分析,你所需要知道的一切

发表于 2017-08-06 | 分类于 Android
背景最近项目组需要实现捕获ANR并上传到公司服务器相关的功能,因此花了点时间来整理相关的知识,并从AMS源码与腾讯Bugly-SDK中逆向找到相关思路,在此分享给大家。 ANR是什么?Application Not Responding的缩写,即应用程序无响应。简单来说,就是应用跑着跑着,突然duang~,界面卡住了,无法响应用户的操作如触摸事件等。 触发ANR的原因 应用进程自身引起 例如: 1.主线程阻塞、挂起、死循环 2.应用进程的其他线程的CPU占用率高,使得主线程无法抢占到CPU ...
阅读全文 »

使用Hexo+GitHub搭建及配置个人博客

发表于 2017-07-31 | 分类于 Blog
前言现在用GitHub+各种静态博客框架来搭建博客系统已经非常常见了,如:Hexo、Jekyll、Octopress、WordPress…等。由于其博客系统维护方便、配置简单、原生支持MD语法等优点等一直深受码农们的喜爱。经过一番查找与对比,博主最终还是选择了Hexo,理由有以下:主题选择多且美、配置异常简单、编译文章速度极快等优点…好了,话不多说,咱们一探究竟。 搭建前的步骤 在GitHub上创建好Repository,name必须以username.github.io的形式来命名,否则不能成 ...
阅读全文 »

开源了一款基于Python3.X编写的网易云音乐下载器(支持嵌入专辑封面等ID3-Tags信息)

发表于 2017-06-30 | 分类于 Open Source
Introduction基于Python3.X编写的网易云音乐命令行下载器,自动下载专辑封面,记录歌手名、音乐标题、专辑名等元数据,并写入ID3 Tags metadata容器。在github上试了几个高星的下载器都没有写入专辑封面,对于强迫症患者简直不能忍,于是一怒之下决定自己写。 项目地址:https://github.com/codezjx/netease-cloud-music-dl Preview Installation若没有安装Python3,请先到官网下载并安装: https: ...
阅读全文 »
123…5
codezjx

codezjx

46 日志
16 分类
55 标签
GitHub Twitter StackOverflow Weibo
© 2020 codezjx
由 Hexo 强力驱动
主题 - NexT.Pisces