Jaqen's Blog

Jaqen's Blog

如何快速上传开源项目至 Jcenter
前几天上传了个项目至 Jcenter,看了网上很多教程,基本都是以 gradle-bintray-plugin 这个插件做上传,教程看着都好费劲,对于新手来说真的好麻烦。 找到了另外一种方法,采用 bintray-release 插件,感觉要比 gradle-bintray-plugin 简单很多啊。于是在此记录一下,希望能帮助到新手。 1、注册 bintray.com 账户jcenter 是属于 bintray 的一个仓库,所以需要注册账户。注意默认注册的是组织,个人账户注册地址是 https://bintray.com/signup/oss ,可以用 GitHub、Google 账户...
Android 专用的日志封装库
俗话说,要想程序不出 Bug, 那就一行代码也不写。 所以在程序开发或者上线后如果出现了 Bug,能够及时查看日志,对修复 Bug 非常有帮助。 目前最为流行的本地日志框架应该是 orhanobut 的 Logger 库,功能很强大而且打印出来的日志非常好看。网络日志这块应该是 square 的 okhttp-logging-interceptor 库。 于是我便对这两种框架进行了封装,作为日常日志工具。这里推荐给大家使用。 支持以下功能 Logcat 后台打印好看整洁的日志。 应用崩溃日志和 error 级别日志自动保存至本地文件。 Logcat 后台打印 Http 日志,屏蔽了文件流...
Android onSaveInstanceState
1、onSaveInstanceState 调用时机? 按 home 键退到后台 按手机息屏键 选择其他程序时 从当前 Activity 启动其他 Activity 中 屏幕切换时 系统内存不足时,优先级低的 Activity 被杀死时 总之,onSaveInstanceState 的调用遵循一个重要原则,即当系统 ”未经许可“ 有销毁 Activity 的可能时,系统有责任保存一些非永久性的数据,而正常退出时是不会调用的。 2、onSaveInstanceState 怎样保存数据? 系统调用 onSaveInstanceState 保存 Activity 的视图结构,比如文本框的...
Java Exception and Error
1、Exception 和 Error 都是继承自 Throwable 类。 2、Exception 包括可检查异常和不检查异常。可检查异常需要在代码中进行显式捕获;不检查异常又叫运行时异常,不强求在代码中捕获。 3、Error 是指在正常情况下,不太会出现的错误,绝大部分 Error 都会导致程序处于非正常、不可恢复状态。 4、尽量不要捕获 Throwable 或者 Error,这样很难保证我们能正确处理。 5、不要生吞异常。对于不知道怎么处理的异常可以直接抛出去或者构建新的异常抛出去,在更高层面有了清晰的业务,往往更清楚合适的处理方式。 6、try-catch 会产生额外的性能开销...
Android ViewPager 与 Fragment 懒加载
ViewPager + 多 Fragment 的模式很常用,但是 ViewPager 存在预加载的问题,如果多个 Fragment 都存在大量的网络请求或读写情况,就影响了 APP 性能和体验。在网上找到了一个比较好的解决方法,方法就是保留 ViewPager 的预加载,在 Fragment 被选中时再加载数据,记录一下。 主要的代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/** * Created by wuzy on 2018/4/23. **/p...
推荐一个好用的 Android 屏幕适配的插件
Android 屏幕适配一直是个消耗时间,但没啥意思的活。 关于 Android 屏幕适配的基本知识可以参考这篇文章: Android 屏幕适配笔记 今天推荐一种适配方案,能够节约大部分适配时间。 dp 适配我们知道获取屏幕最小宽度 dp 值的方法: 123456789DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);int widthPixels = dm.widthPixels; float density = dm.density;...
Android 绘制虚线
Android 中绘制虚线可采用添加在布局文件中添加一个 View,然后给这个 View 加个虚线背景即可。 一般都是用 shape 绘制虚线 : 1234567891011<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:dashGap="2dp" android:dashWidth="...
Android setContentView,Window,PhoneWindow and DecorView
从 Activity 的 setContentView(R.layout.activity_main) 开始。 1234public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(layoutResID); initWindowDecorActionBar();} 这里调用了 getWindow().setContentView 方法,那这个 getWindow() 是什么呢? 1234567891011/** * Retrieve the curr...
《禅与摩托车维修艺术》摘录
1. 我们夫妻俩和一些老友迷上这种乡间小路已经有好些年了。当初为了调剂一下或是为了去另一条干道而走捷径,都不免要骑上一段。每次我们都会惊讶于景色的美丽,骑回原路时便有一种轻松愉悦的感觉。我们经常这么骑,后来才明白道理其实很简单:这些乡间小路和一般的干道迥然不同,就连沿线居住的居民的生活步调和个性也不一样。他们一直都没有离开过本地,所以可以很悠闲地和你寒暄问候、谈天说地,那感觉好极了。反而是那些早就搬到城市里的人和他们的子子孙孙迷失了,忘记了这种情怀。这实在是一个宝贵的发现。我在想,为什么我们这么久之后才会对其着迷。我们早已看过却仿佛没有看到,或者说是环境使我们视而不见,蒙骗了我们,让我们...
avatar
Jaqen Ng